Java: Как объединить атрибуты двух классов в один?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java: Как объединить атрибуты двух классов в один?

Сообщение Anonymous »

Я пытаюсь преобразовать код JavaScript в код Java.
В JavaScript интерфейсы могут иметь атрибуты, а интерфейс может расширять несколько интерфейсов:

Код: Выделить всё

interface Interface1 {
name?: string
age?: number
}

interface Interface2 {
id?: string
}

interface InterfaceCombination extends Interface1, Interface2 {
position?: string
}
Я хочу перевести этот код JavaScript в код Java. У меня есть несколько идей, но я не знаю, хороши ли они.

Первая идея: классы и делегирование

Поскольку интерфейсы Java имеют только окончательные статические атрибуты, я выбираю классы для поддержки этих атрибутов:

Код: Выделить всё

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
}
Однако есть проблема. Класс Java может расширять только один класс, поэтому я решил использовать делегирование:

Код: Выделить всё

public class ClassCombination {
private Class1 class1;
private Class2 class2;
private String position;
public String getName() {
return class1.getName();
}
... // getters & setters
}
Это приведет к большому количеству повторной работы, если иерархия делегирования глубока. Я пытался использовать аннотацию @Delegate в Ломбок, но это экспериментально и не поддерживает рекурсивное делегирование.

Вторая идея: интерфейс, геттеры и сеттеры

Хотя класс Java может расширять только один класс, интерфейс Java может расширять несколько интерфейсов.

Код: Выделить всё

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
}
Это решение приведет к тяжелой работе по написанию геттеров и сеттеров в интерфейсах. И я не могу использовать lombok для автоматического создания геттеров и сеттеров в интерфейсах.
Есть ли более элегантное и простое в реализации решение?

Подробнее здесь: https://stackoverflow.com/questions/701 ... s-into-one
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»