Пользовательский шаблон затмения, чтобы заставить сеттер вернуть этот объект? - PullRequest
11 голосов
/ 11 февраля 2011

Мне нужно настроить шаблон затмения для возврата этого объекта, как это

public Person setName(String name){
    this.name=name;
    return this;
}

, но Java-> Code Style-> Templates позволяют мне только настраиваемую часть тела сеттера, но не определение метода. Есть ли способ сделать это?

Ответы [ 3 ]

6 голосов
/ 04 марта 2011

Боюсь, я не могу предложить решение, позволяющее вам изменить шаблон Eclipse для этого, однако могу ли я предложить вам переосмыслить то, что вы здесь делаете?

Если вы проверите спецификацию JavaBeans , вы увидите, что когда вы определяете свои методы таким образом, они больше не являются допустимыми установщиками свойств. Сеттеры должны иметь тип возврата void; Вы можете сожалеть о создании этих нестандартных компонентов в долгосрочной перспективе. Например, попробуйте использовать java.beans.Introspector для сбора информации о компонентах для вашего класса, и вы увидите, что «сеттеры» вашего свойства не найдены.

Я знаю, что приятно иметь возможность быстро инициализировать ваши bean-компоненты с помощью связанных вызовов, таких как:

new Person().setName("John Smith").setDateOfBirth(...).setAddress(...)

Могу ли я предложить в качестве альтернативы использовать стандартные сеттеры (которые возвращают void) и вместо этого ввести методы компоновщика, такие как:

public Person withName(String name) {
    this.setName(name);
    return this;
}

Ваша быстрая однолинейная конструкция выглядит следующим образом:

new Person().withName("John Smith").withDateOfBirth(...).withAddress(...)

Я считаю, что префикс 'with' тоже хорошо читается.

4 голосов
/ 07 августа 2011

Вы можете использовать Fast Code Eclipse Plugin , чтобы сделать это довольно легко.

0 голосов
/ 18 августа 2014

Насколько я могу судить, все, что вы можете сделать, это отредактировать шаблон "Window-> Preferences-> Java-> Code Style-> Code-> Setter body" в Java следующим образом:

${field} = ${param};
return this;

Хотя это не будет автоматически устанавливать тип возвращаемого значения для вас, Eclipse бросает в вас волнистый красный цвет для каждого из ваших сеттеров, который вы можете затем навести на него и выбрать «Изменить тип возврата метода на« yourTypeHere »».*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...