Как генерировать конструкторы в eclipse

У меня есть класс A и BM extends A. Теперь я хочу создать конструктор B, используя команду генерации кода eclipse, которая принимает параметры и устанавливает значения всех полей B (я имею в виду, что он также должен устанавливать поля, унаследованные от A).

Есть ли ярлык для создания такого кода в eclipse?

Ответ 1

Щелкните правой кнопкой мыши в редакторе и выберите "Source → Generate Constructor using Fields". Вы можете выбрать супер конструктор для использования, а также выбрать переменные экземпляра для добавления в конструктор.

Ответ 2

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;
    }
}

Ответ 3

Нет автоматического способа сделать это, и я близок к тому, что команда Eclipse сделала это специально, так как это привело бы к плохому дизайну.

Построение класса - это инициализация только собственных полей объектов. Если вам нужно установить (init) поля над суперклассами, вызовите конструктор суперклассов, если вам нужно изменить поля суперкласса, вызовите методы удержания суперкласса и сеттера.

Для меня это плохой дизайн для полей суперкласса init, и его можно легко избежать.