Есть ли способ автоматически генерировать геттеры и сеттеры в Eclipse?


256

Я работаю над новым Androidпроектом ( Java) и создал объект с большим количеством переменных. Поскольку я планирую добавить методы получения и установки для всех них, мне было интересно: есть ли ярлык Eclipseдля автоматической генерации методов получения и установки в данном классе?


1
Для меня это похоже на преследователя ... Я просто занимался программированием на Java без IDE, поэтому использование Eclipse для меня все еще относительно ново.
Фил

3
@krio - весь мир не использует Eclipse для Java-разработчика. Я сделал большую часть своей работы в IntelliJ и обнаружил, что задаю много таких вопросов, как только начал работать в Eclipse.
vcsjones

1
@Phil, vcsjones - очень верно мои извинения, но посмотрите на это, - google.com.au/… - Мне кажется, stackoverflow говорит, что исследования важны
TeaCupApp

2
это самый быстрый способ: ctrl + 3 ggas
dellasavia

1
@Konstantin, который просто говорит, чтобы не использовать их в одном классе, поэтому не звоните this.getCount(), когда вы можете просто ссылаться this.mCount. Хотя это может быть более дорогостоящей операцией, это более чистый подход для обеспечения доступа к переменным других объектов с помощью методов получения и установки.
Фил

Ответы:


357

Откройте контекстное меню (т.е. щелкните правой кнопкой мыши) в окне исходного кода нужного класса. Затем выберите Sourceподменю; при выборе этого меню Generate Getters and Setters...появится окно мастера.

Source -> Generate Getters and Setters...

Выберите переменные, для которых вы хотите создать методы получения и установки, и нажмите OK.


Существует только «Создать комментарий к элементу», нет получателей и установщиков. Я использую Eclipse 4.4.0, установлен плагин PDT. Тем временем это может быть использовано - mikeangstadt.name/projects/getter-setter-gen .
XDG

Отлично работает на Eclipse Mars.2 Release (4.5.2). Спасибо.
this.user3272243

Спасибо, что спасли мне около миллиона лет от скуки!
Джей Эдвардс

11
Вы также можете получить доступ к этому подменю с помощью сочетания клавиш SHIFT+ ALT+ S, а затем открыть параметры «Создать геттеры и сеттеры», нажав R.
Роза

Забавно, что мой ответ стал настолько популярным, но в эти дни я просто использовал Lombok , как отмечалось другими ниже.
Хагай Цибульски

70

В Eclipse Juno по умолчанию ALT + SHIFT + S, R открывает диалоговое окно получения / установки. Обратите внимание, что вы должны нажать все 4 клавиши.


5
Вы можете пропустить часть SHIFT и просто выполнить ALT + S, R.
Джейсон Уилер

2
Вы не можете выйти SHIFTв Eclipse Kepler
yellavon

Вы можете оставить SHIFTв Eclipse Oxygen.
Джейк Рис

Вы не можете оставить SHIFTв Eclipse 2018-12.
Неф


41

Все остальные ответы просто сосредоточены на уровне IDE, это не самый эффективный и элегантный способ создания геттеров и сеттеров. Если у вас есть десятки атрибутов, соответствующие методы getter и setters сделают ваш код класса очень многословным.

Лучший способ, которым я когда-либо пользовался для автоматической генерации методов получения и установки, - это использование аннотаций проекта lombok в вашем java-проекте. Lombok.jar будет генерировать методы получения и установки при компиляции кода java.

Вы просто сосредотачиваетесь на именовании и определении атрибутов / переменных класса, остальное сделает lombok. Это легко поддерживать ваш код.

Например, если вы хотите добавить метод ageget и метод set для переменной, вы просто добавляете две аннотации lombok:

@Getter @Setter 
public int age = 10;

Это равносильно такому коду:

private int age = 10;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

Вы можете найти более подробную информацию о ломбок здесь: Проект Ломбок


1
Это оно! Большое спасибо! На самом деле, ваш ответ должен быть на вершине, так как lombok - единственное верное решение, чтобы не видеть весь шаблонный Java-код, который нужно было бы сгенерировать или написать. Спасибо!
Стефан Эндруллис

2
Проект Lombok (или, по крайней мере, идея) должен быть частью Java 11. Я использую Kotlin для классов Pojo только для того, чтобы избежать генерации
метода получения

31

Способы создания геттеров и сеттеров -

1) Нажмите Alt+ Shift+ S, затемR
2) Щелкните правой кнопкой мыши -> Источник -> Создать геттеры и сеттеры
3) Перейдите в меню «Источник» -> Создать геттеры и сеттеры
4) Перейдите в меню Windows -> Настройки -> Общие -> Ключи (Написать Генерировать Геттеры и сеттеры в текстовом поле)
5) Нажмите на лампочку с ошибкой поля -> создать геттеры и сеттеры ...
6) Нажмите Ctrl+3 и напишите геттеры и сеттеры в текстовое поле, затем выберите опцию Генерировать геттеры и сеттеры

если Mac OS, нажмите Alt + cmd + S, затем выберите Getters & Setters


2
Я думаю, что 1 это немного проще: 1) Нажмите Alt + Shift + S, затем R
Пако Абато

1
Нажатие Ctrl-3 и сразу после этого ввод «getter» отсутствует в списке. Намного легче запомнить, чем конкретные ярлыки, так как это работает для каждой команды, представления и так далее.
Bananeweizen

@ Bananeweizen - Спасибо
Дипак Гупта

11

Правый клик-> создать геттеры и сеттеры хорошо справляется со своей задачей, но если вы хотите создать сочетание клавиш в eclipse в окнах, вы можете выполнить следующие шаги:

  1. Перейти к окну> Настройки
  2. Перейдите в раздел Общие> Ключи
  3. Список для «Quick Assist - Создать геттер / сеттер для поля»
  4. В текстовом поле «Привязка» ниже удерживайте нужные клавиши (в моем случае я использую ALT + SHIFT + G)
  5. Хит Применить и ОК
  6. Теперь в вашем редакторе Java выберите поле, для которого вы хотите создать методы getter / setter, и нажмите на ярлык, который вы установили на шаге 4. Нажмите ok в этом окне, чтобы создать методы.

Надеюсь это поможет!


9

Конечно.

Используйте «Создать геттеры и сеттеры» из меню «Источник» или контекстного меню в выбранном поле или типе, или выделите текст в типе, чтобы открыть диалоговое окно. Диалоговое окно «Создать методы получения и установки» показывает методы получения и установки для всех полей выбранного типа. Методы сгруппированы по полям типа.

Посмотрите справочную документацию для получения дополнительной информации.


8

Да. Щелкните правой кнопкой мыши код, и вы увидите всплывающее меню; там «Источник», «Создать геттеры и сеттеры», а рядом с ним вы можете увидеть ярлык, который Alt + Shift + S и R в моей системе.

Точно так же вы можете перейти к другим подменю в этом главном меню, набрав соответствующий ярлык, вы идете прямо подменю вместо основного контекстного меню, а затем можете либо выбрать из меню, либо ввести другую букву для выбора из списка.



7

Я предпочитаю сначала создать личное поле

private String field;

Eclipse автоматически выделит переменную, поместив курсор на новую переменную, нажмите Ctrl + 1. Затем откроется меню «Создать геттер и сеттер».

Я нажимаю Ctrl + 1, потому что он немного более интеллектуален в отношении того, что я думаю, что вы хотите дальше.


5

Нажмите Alt + Shift + S + R ... и затем выберите только все поля, которые вы должны сгенерировать.


5
  • Для всех переменных ALT + SHIFT + S Затем R и для выбора всех Нажмите ALT + A

  • Для одиночной переменной Наведите курсор на переменную, затем нажмите CTRL + 1 и перейдите ко второму варианту из предложений

Скриншот


Спасибо, это то, что я искал.
Шамс Нахид

4

Доступен jar с открытым исходным кодом, известный как Lombok , вы просто добавляете jar, а затем комментируете свой POJO с помощью @Getter & @Setter, он автоматически создает методы получения и установки.

Помимо этого мы можем использовать другие функции, такие как @ToString , @EqualsAndHashCode и другие интересные вещи, которые удаляют ванильный код из вашего приложения.



3

** В Eclipse Ide

для генерации как сеттеров, так и геттеров -> alt + shift + s + r, затем Alt A, затем нажмите ОК;

для генерации только геттеров -> alt + shift + s + r, затем нажмите g, затем нажмите кнопку ОК;

для генерации только сеттеров -> alt + shift + s + r, затем нажмите l, затем нажмите кнопку ОК; **


2

Щелкните правой кнопкой мыши свойство, для которого вы хотите создать метод получения и установки, и выберите

Source -> Generate Getters and Setters...

2

1) Зайдите в Windows-> Настройки-> Общие-> Ключи

2) Выберите command« Создать геттеры и сеттеры »

3) В Binding, нажмите на ярлык, который хотите использовать (например, Alt + Shift + G )

4) Нажмите « Применить», и все готово


1
  1. Откройте файл класса в Eclipse
  2. Дважды щелкните по названию класса или выделите его
  3. Затем перейдите к исходному коду -> Вставить код
  4. Нажмите на геттер и сеттер

Открывается всплывающее окно для выбора полей, для которых должны быть созданы методы получения / установки. Выберите поля и нажмите кнопку «Создать». введите описание изображения здесьвведите описание изображения здесь


1

Используйте Project Lombok или лучше Kotlin для ваших Pojos.

(Кроме того, чтобы добавить Kotlin в ваше резюме;))

Это :

public class BaseVO {
    protected Long id;

    @Override
    public boolean equals(Object obj) {
        if (obj == null || id == null)
            return false;

        if (obj instanceof BaseVO)
            return ((BaseVO) obj).getId().equals(id);

        return false; 
    }

    @Override
    public int hashCode() {
        return id == null ? null : id.hashCode();
    }
    // getter setter here
}

public class Subclass extends BaseVO {
    protected String name;
    protected String category;
    // getter setter here
}

станет этим:

open class BaseVO(var id: Long? = null) {

    override fun hashCode(): Int {
        if (id != null)
            return id.hashCode()

        return super.hashCode()
    }

    override fun equals(other: Any?): Boolean {
        if (id == null || other == null || other !is BaseVO)
            return false

        return id.hashCode() == other.id?.hashCode()
    }
}

@Suppress("unused")
class Subclass(
        var name: String? = null,
        var category: String? = null
) : BaseVO()

Или используйте классы данных Котлина. В итоге вы пишете еще меньше строк кода.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.