Ответ 1
Щелкните правой кнопкой мыши в редакторе и выберите "Source → Generate Constructor using Fields". Вы можете выбрать супер конструктор для использования, а также выбрать переменные экземпляра для добавления в конструктор.
У меня есть класс A и BM extends A. Теперь я хочу создать конструктор B, используя команду генерации кода eclipse, которая принимает параметры и устанавливает значения всех полей B (я имею в виду, что он также должен устанавливать поля, унаследованные от A).
Есть ли ярлык для создания такого кода в eclipse?
Щелкните правой кнопкой мыши в редакторе и выберите "Source → Generate Constructor using Fields". Вы можете выбрать супер конструктор для использования, а также выбрать переменные экземпляра для добавления в конструктор.
Eclipse (3.5) не имеет встроенной опции для этого конкретного случая, но я бы все же предположил, что у вас есть отдельный конструктор в суперклассе, который подкласс вызывает через super(...)
в его конструкторе.
Это будет легче поддерживать. Если вы, например, добавили подачу в суперклассу, вам также нужно будет также обновить подкласс.
class A {
int i;
public A(int i) { this.i = i; }
}
class B extends A {
int j;
public B(int i, int j) {
super(i);
this.j = j;
}
}
Нет автоматического способа сделать это, и я близок к тому, что команда Eclipse сделала это специально, так как это привело бы к плохому дизайну.
Построение класса - это инициализация только собственных полей объектов. Если вам нужно установить (init) поля над суперклассами, вызовите конструктор суперклассов, если вам нужно изменить поля суперкласса, вызовите методы удержания суперкласса и сеттера.
Для меня это плохой дизайн для полей суперкласса init, и его можно легко избежать.