Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
Java: ¿Cómo combinar atributos de dos clases en una sola?

Estoy tratando de traducir código JavaScript a código Java.

En JavaScript, las interfaces pueden tener atributos y una interfaz puede extender múltiples interfaces:

 interface Interface1 { name?: string age?: number } interface Interface2 { id?: string } interface InterfaceCombination extends Interface1, Interface2 { position?: string }

Quiero traducir este código JavaScript a código Java. Tengo varias ideas, pero no sé si son buenos diseños.

Primera idea: clases y delegación

Dado que las interfaces de Java solo tienen atributos final static , elijo clases para mantener esos atributos:

 public class Class1 { private String name; private Number age; public String getName(); public void setName(String name); ... // getter & setter for age } public class Class2 { private String id; ... // getter & setter for id }

Sin embargo, ahí está el problema. Una clase de Java solo puede extender una clase, así que elijo usar la delegación:

 public class ClassCombination { private Class1 class1; private Class2 class2; private String position; public String getName() { return class1.getName(); } ... // getters & setters }

Esto daría lugar a una gran cantidad de trabajo repetido cuando la jerarquía de la delegación es profunda. Traté de usar la anotación @Delegate en lombok, pero esto es experimental y no admite la delegación recursiva.

Segunda idea: interfaz y getters y setters

Aunque una clase Java solo puede extender una clase, una interfaz Java puede extender múltiples interfaces.

 public interface Interface1 { public String getName(); public void setName(); ... // getter & setter for age } public interface Interface2 { ... // getter & setter for id } public interface InterfaceCombination extends Interface1, Interface2 { ... // getter & setter for position }

Esta solución conduciría a un trabajo pesado en la escritura de getters y setters en las interfaces. Y no puedo usar lombok para generar captadores y definidores automáticamente en las interfaces.

¿Hay alguna solución más elegante y fácil de implementar?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Siempre puede hacer que los atributos sean públicos si no desea escribir varios captadores y definidores. Además, en Java, el código debe ser:

 public interface InterfaceCombination implements Interface1, Interface2 {

No

 public interface InterfaceCombination extends Interface1, Interface2 {
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!