У меня есть класс A и BM расширяет A. Теперь я хочу создать конструктор B, используя параметр генерации кода eclipse, который принимает параметры и устанавливает значения всех полей B (я имею в виду, что он также должен устанавливать поля, унаследованные от A).
Есть ли какой-либо ярлык для генерации такого кода в eclipse?
Щелкните правой кнопкой мыши в редакторе и выберите «Источник -> Создать конструктор с использованием полей». Вы можете выбрать суперконструктор для использования, а также выбрать переменные экземпляра для добавления в конструктор.
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) в суперклассе, вызовите конструктор суперклассов, если вам нужно изменить поля суперкласса, вызовите методы получения и установки суперклассов.
Для меня это плохой дизайн - инициализировать поля суперкласса, и этого легко избежать.