Eclipse getter / setter format - PullRequest
       11

Eclipse getter / setter format

10 голосов
/ 27 января 2009

Кто-нибудь знает о подключаемом модуле Eclipse или методе, позволяющем Eclipse генерировать геттер / установщики в одну строку, например:

public String getAbc() { return abc; }

Вместо

public String getAbc() {
   return abc;
}

Я нахожусь на Eclipse v. 3.2.2.

Спасибо.

Ответы [ 6 ]

12 голосов
/ 27 января 2009

Я не знаю, как заставить Eclipse генерировать их в нужном вам формате, но вы можете выполнить поиск / замену, используя эти регулярные выражения после генерации методов:

Найти:

(?m)((?:public |private |protected )?[\w$]+) (get|set|is)([\w$]+)\(([\w$]+(?:\[\])? [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\}

Заменить на:

$1 $2$3($4) { $5 }

Это выражение преобразует сгенерированные методы получения и установки в одну строку. Не беспокойтесь о запуске этого со смесью преобразованных и недавно сгенерированных методов; это будет работать просто отлично.

4 голосов
/ 22 ноября 2012

Я думаю, что сопоставление генериков также важно, поэтому правильное регулярное выражение:

(?m)((?:public |private |protected )?[\w\<\>$]+) (get|set|is)([\w$]+)\(([\w\<\>$]+ [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\}
2 голосов
/ 29 мая 2015

В качестве варианта подхода замены регулярных выражений, следующее переформатирует пустое пространство, так что за установщиками следует пустая строка, а за получателями - нет.

Найти:

(\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, но я не встречал никаких "ложноположительных" замен.

1 голос
/ 09 августа 2011

Вы можете использовать плагин быстрого кода для генерации таких методов установки геттеров. Подробности приведены здесь: http://fast -code.sourceforge.net / documentation.htm # create-new-field .

Create Variable

1 голос
/ 28 января 2009

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

Вам понадобится либо:

  1. выполнить поиск / замену вышеупомянутым регулярным выражением
  2. получить внешний плагин, такой как PMD или CheckStyle и применить правило регулярных выражений на основе предыдущего параметра
0 голосов
/ 19 октября 2012

Я хотел опубликовать комментарий к указанному ответу, но, похоже, не смог.

Я изменил ответ Хосама Али для работы с общими и внутренними типами формы:

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 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...