Формат получателя/сеттера Eclipse
Кто-нибудь знает о подключаемом модуле Eclipse или методе, чтобы заставить Eclipse генерировать getter/seters в одной строке следующим образом:
public String getAbc() { return abc; }
Вместо
public String getAbc() {
return abc;
}
Я на Eclipse v. 3.2.2.
Спасибо.
Ответы
Ответ 1
Я не знаю, как заставить Eclipse генерировать их в нужном вам формате, но вы можете выполнить поиск/замену с помощью этих регулярных выражений после создания методов:
Поиск:
(?m)((?:public |private |protected )?[\w$]+) (get|set|is)([\w$]+)\(([\w$]+(?:\[\])? [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\}
Заменить на:
$1 $2$3($4) { $5 }
Это выражение преобразует сгенерированные геттеры и сеттеры в одну строку. Не беспокойтесь о запуске его смесью преобразованных и вновь созданных методов; он будет работать нормально.
Ответ 2
Я думаю, что подходящие дженерики также важны, поэтому правильное регулярное выражение:
(?m)((?:public |private |protected )?[\w\<\>$]+) (get|set|is)([\w$]+)\(([\w\<\>$]+ [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\}
Ответ 3
В качестве варианта подхода замены regexp следующие переформатируют пробел, так что сеттерам следует пустая строка, но геттеры не являются.
Поиск:
(\s(?:get|is|set)\w+\([^)]*\))\s*\{\s*(?:([^=;}]+;)\s*\}\s*(\R)|([^=;}]+=[^=;}]+;)\s*\}\s*(\R))
Заменить на:
$1 { $2$4 } \R$5
Результаты в:
int getTotal() { return total; }
void setTotal(int total) { this.total = total; }
List<String> getList() { return list; }
void setList(List<String> list) { this.list = list; }
Map.Entry<String, Integer> getEntry() { return entry; }
void setEntry(Map.Entry<String, Integer> entry) { this.entry = entry; }
Это незначительная эстетическая вещь, но я подумал, что если вы ищете ответ на этот вопрос, то вы, вероятно, (почти) как анал, как я; -)
Я знаю, что мои условия регулярного выражения не такие строгие, как условия @Hosam, но я не испытывал никаких "ложноположительных" замен.
Ответ 4
Форматирование кода Java в Eclipse не отличает между getters/seters и любыми другими методами в классе. Таким образом, это невозможно сделать с помощью встроенного форматирования eclipse.
Вам понадобится:
- выполнить поиск/замену с помощью указанного выше выражения
- получить внешний плагин, например PMD или CheckStyle и выполните правило регулярного выражения на основе предыдущей опции
Ответ 5
Вы можете использовать быстрый плагин кода для создания такого рода сборщиков. Подробности приведены здесь: http://fast-code.sourceforge.net/documentation.htm#create-new-field.
![Create Variable]()
Ответ 6
Я хотел опубликовать комментарий к назначенному ответу, но, похоже, не могу.
Я изменил Hosam Aly на работу с родовыми и внутренними типами формы:
List<X>
и
Map.Entry
Пересмотренная строка поиска регулярных выражений:
(?m)((?:public |private |protected )?[\w\.\<\>$]+) (get|set|is)([\w$]+)\(([\w\.\<\>$]+ [\w$]+)?\) \{\s+(return [\w\.\<\>$]+;|this.[\w$]+ = [\w$]+;)\s+\}
Это регулярное выражение позволяет использовать угловые скобки и точку в типе.
Например:
public List<String> getStringList()
и
public void setStringList(List<String> list)
и
public Map.Entry getEntry ()
И строка замены такая же, как и раньше:
$1 $2$3($4) { $5 }