Может ли IntelliJ генерировать геттеры без префикса "get"?

IntelliJ имеет классную функцию для генерации Java-геттеров. Например, для поля private final String foo он будет генерировать геттер getFoo().

Можно ли настроить IntelliJ для генерации геттеров в формате String foo()? Я работаю в основном с неизменяемыми объектами и предпочитаю этот синтаксис.

Ответ 1

Аккуратный вопрос! Просто, чтобы уточнить @Danny Dan ответ, так как IntelliJ 15 был выпущен...

Чтобы установить это:

  • Alt + Insert
  • Выберите Getter
  • Откройте конфигурацию шаблона из "..." на RHS
  • Создайте новый шаблон из LHS - см. пример ниже
  • Хорошо и выберите новый шаблон

Пример шаблона: fluent-getter

 public ##
 #if($field.modifierStatic)
   static ##
 #end
 $field.type ##
 ${field.name}() {
   return $field.name;
 }

Зачем вам это нужно?

Оформить заказ Внедрение управляемого доменом дизайна:

Простой, но эффективный подход к дизайну объектов сохраняет объект Value верным для Ubiquitous Language. Использование getValuePercentage() является техническим выражением на компьютере, но valuePercentage() - это свободное выражение для чтения человеком.

Ответ 2

Если я правильно понял, теперь вы не можете изменить геттеры/сеттеры в идее. Проблема на youtrack

P.S. Итак, теперь версия Fix - 14.1, из этой версии идеи вы можете создать и выбрать шаблон getter/setter непосредственно в меню Alt-Insert.

Ответ 3

Вот несколько немного улучшенных шаблонов на основе @Ed. предыдущий ответ:

Свободный-газопоглотитель:

public ##
#if($field.modifierStatic)
  static ##
#end
$field.type ##
${field.name}() {
return ##
#if (!$field.modifierStatic)
this.##
#else
  $classname.##
#end
$field.name;
}

свободно-сеттер:

#set($paramName = $helper.getParamName($field, $project))
public ##
#if($field.modifierStatic)
  static ##
#end
void ##
${field.name}($field.type $paramName) {
#if ($field.name == $paramName)
  #if (!$field.modifierStatic)
  this.##
  #else
    $classname.##
  #end
#end
$field.name = $paramName;
}