IntelliJ可以生成没有“get”前缀的getter吗?

时间:2014-10-24 21:37:07

标签: java intellij-idea getter getter-setter

IntelliJ具有生成Java getter的很酷功能。例如,对于字段private final String foo,它将生成一个getter getFoo()

有什么方法可以配置IntelliJ以String foo()格式生成getter?我主要使用不可变对象,并且更喜欢这种语法。

4 个答案:

答案 0 :(得分:11)

整洁的问题!只是为了澄清@Danny Dan的答案,因为IntelliJ 15已经发布......

进行设置:

  • 替代 + 插入
  • 选择 Getter
  • 从RHS上的' ...' 打开模板配置
  • 从LHS创建新模板 - 请参阅下面的示例
  • 确定并选择新模板

示例模板:fluent-getter

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

你为什么要这样做?

结帐Implementing Domain-Driven Design

  

对象设计的简单而有效的方法使价值对象忠实于无所不在的语言。使用getValuePercentage()是一种技术性计算机语句,但valuePercentage()是一种流利的人类可读语言表达。

答案 1 :(得分:3)

如果我理解正确,你现在就无法修改getter / setter。 Issue on youtrack

P.S。好的,现在Fix版本是14.1,您可以在Alt-Insert菜单中直接创建并选择getter / setter模板。

答案 2 :(得分:1)

以下是基于@Ed。previous answer的一些略微改进的模板:

流利-吸气剂:

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;
}

答案 3 :(得分:0)

我喜欢为isXxx使用boolean(例如isConnected()),如果需要,则模板为:

#if($field.modifierStatic)
static ##
#end
$field.type ##
#set($name = $StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))
#if ($field.boolean && $field.primitive)
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))is##
#else
  ##
#end
${name}() {
  return $field.name;
}