为什么Intellij默认的getter/setter模板删除我的布尔"是"变量名前缀?

Ari*_*car 6 java coding-style intellij-idea

我有一个实体.我将变量定义为boolean,并使用Intellij Idea Shortcuts创建了Getter和Setter方法.

private Boolean isForLaboratory = false;
Run Code Online (Sandbox Code Playgroud)

ddasd

在此输入图像描述

创建后它生成了这个:

public Boolean getForLaboratory() {
    return isForLaboratory;
}

public void setForLaboratory(Boolean forLaboratory) {
    isForLaboratory = forLaboratory;
}
Run Code Online (Sandbox Code Playgroud)

我期待getIsForLaboratory和setIsForLaboratory.它是Java的通用约定吗?为什么Intellij删除了我的前缀?

vik*_*eve 8

如果您弹出此对话框GenerateGetter and Setter,你可以看到:

Getter template: IntelliJ Default
Setter template: IntelliJ Default
Run Code Online (Sandbox Code Playgroud)

单击Getter Template标有的右侧的按钮...,您可以看到模板代码包括以下内容:

#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
  #set($name = $StringUtil.decapitalize($name))
#else
  is##
Run Code Online (Sandbox Code Playgroud)

换句话说,对于以is- 开头的字段有特殊处理- 如果你想编写自己的模板,你当然可以这样做:)

至于为什么 - 布尔字段有一个javabeans标准,其中名为(例如)的字段的getter boolean enabled可以isEnabled()代替getEnabled(),并且肯定与此相关.