为什么 Intellij 默认 getter/setter 模板会删除我的布尔值 "is" 变量名前缀?
Why do Intellij default getter/setter templates delete my boolean "is" variable name prefix?
我有一个实体。我将变量定义为布尔值,并使用 Intellij Idea 快捷方式创建了 Getter 和 Setter 方法。
private Boolean isForLaboratory = false;
创建后生成了这个:
public Boolean getForLaboratory() {
return isForLaboratory;
}
public void setForLaboratory(Boolean forLaboratory) {
isForLaboratory = forLaboratory;
}
我期待 getIsForLaboratory 和 setIsForLaboratory。它是 Java 的一般约定吗?为什么 Intellij 删除了我的前缀?
如果弹出Dialog到Generate
到Getter and Setter
,可以看到:
Getter template: IntelliJ Default
Setter template: IntelliJ Default
点击Getter Template
右边标有...
的按钮,可以看到模板代码包括以下内容:
#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
#set($name = $StringUtil.decapitalize($name))
#else
is##
换句话说,对于以 is
开头的字段有特殊处理 - 如果您想编写自己的模板,您当然可以这样做:)
至于为什么 - 布尔字段有一个 javabean 标准,其中名为(例如)boolean enabled
的字段的 getter 可以是 isEnabled()
而不是 getEnabled()
,肯定和这个有关
在 IntelliJ 版本 15+ 中,您必须使用原始布尔值让 IntelliJ 生成带有 "is" 前缀的 Get 函数。
默认的 Getter Template
看起来像这样:
#if ($field.boolean && $field.primitive)
#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
#set($name = $StringUtil.decapitalize($name))
#else
is##
#end
所以在 IntelliJ 15.x 及更高版本中正确的方法应该是这样的:
private boolean forLaboratory = false;
自动生成后:
public boolean getForLaboratory() {
return forLaboratory;
}
public void isForLaboratory(boolean forLaboratory) {
this.forLaboratory = forLaboratory;
}
我有一个实体。我将变量定义为布尔值,并使用 Intellij Idea 快捷方式创建了 Getter 和 Setter 方法。
private Boolean isForLaboratory = false;
创建后生成了这个:
public Boolean getForLaboratory() {
return isForLaboratory;
}
public void setForLaboratory(Boolean forLaboratory) {
isForLaboratory = forLaboratory;
}
我期待 getIsForLaboratory 和 setIsForLaboratory。它是 Java 的一般约定吗?为什么 Intellij 删除了我的前缀?
如果弹出Dialog到Generate
到Getter and Setter
,可以看到:
Getter template: IntelliJ Default
Setter template: IntelliJ Default
点击Getter Template
右边标有...
的按钮,可以看到模板代码包括以下内容:
#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
#set($name = $StringUtil.decapitalize($name))
#else
is##
换句话说,对于以 is
开头的字段有特殊处理 - 如果您想编写自己的模板,您当然可以这样做:)
至于为什么 - 布尔字段有一个 javabean 标准,其中名为(例如)boolean enabled
的字段的 getter 可以是 isEnabled()
而不是 getEnabled()
,肯定和这个有关
在 IntelliJ 版本 15+ 中,您必须使用原始布尔值让 IntelliJ 生成带有 "is" 前缀的 Get 函数。
默认的 Getter Template
看起来像这样:
#if ($field.boolean && $field.primitive)
#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
#set($name = $StringUtil.decapitalize($name))
#else
is##
#end
所以在 IntelliJ 15.x 及更高版本中正确的方法应该是这样的:
private boolean forLaboratory = false;
自动生成后:
public boolean getForLaboratory() {
return forLaboratory;
}
public void isForLaboratory(boolean forLaboratory) {
this.forLaboratory = forLaboratory;
}