Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

284
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda