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

sh7euo9m  于 2023-11-16  发布在  其他
关注(0)|答案(5)|浏览(112)

IntelliJ有一个很酷的特性来生成Java getter。例如,对于字段private final String foo,它将生成一个getter getFoo()
有没有什么方法可以配置IntelliJ来生成String foo()的getter?我主要使用不可变对象,更喜欢这种语法。

mfuanj7w

mfuanj7w1#

问得好!只是为了澄清@丹尼丹的答案,因为IntelliJ 15已经发布了...

要设置此功能:

  • Alt+插入
  • 选择 Getter
  • 从RHS上的 '...' 打开模板配置
  • 从LHS创建新模板-参见以下示例
    • 确定 * 并选择新模板

示例模板:fluent-getter

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

字符串
你为什么要这么做?
checkout Implementing Domain-Driven Design
对象设计的简单而有效的方法使值对象忠实于泛在语言。getValuePercentage()的使用是一种技术性的计算机语句,而valuePercentage()是一种流畅的人类可读的语言表达式。

vh0rcniy

vh0rcniy2#

如果我理解正确的话,你现在不能修改idea中的getter/setter。Issue on youtrack
P.S.好的,现在修复版本是14.1,从这个版本的想法,你可以创建和选择getter/setter模板直接在Alt-Insert菜单。

ia2d9nvy

ia2d9nvy3#

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

fluent-getter:

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

mutmk8jj

mutmk8jj4#

我喜欢有isXxxboolean(例如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;
}

字符串

jyztefdp

jyztefdp5#

有了Java记录,Intellij为此目的提出了内置模板记录样式

  • 按Alt+Insert
  • 选择 Getter
  • 从模板下拉菜单中选择 * 记录样式 *


的数据

相关问题