当前位置: 首页 > 知识库问答 >
问题:

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

太叔景同
2023-03-14

我有一个实体。我将变量定义为布尔值,并使用Intellij Idea快捷方式创建了Getter和Setter方法

private Boolean isForLaboratory = false;

创建后生成:

public Boolean getForLaboratory() {
    return isForLaboratory;
}

public void setForLaboratory(Boolean forLaboratory) {
    isForLaboratory = forLaboratory;
}

我期待getIsForLab和setIsForLab。这是Java的惯例吗?为什么Intellij删除了我的前缀?

共有2个答案

华子航
2023-03-14

在IntelliJ版本15中,您必须使用原始布尔值使IntelliJ生成带有“is”前缀的Get函数。

默认的Getter模板如下所示:

#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;
}
长孙泉
2023-03-14

如果您弹出对话框来生成Getter和Setter,您可以看到:

Getter template: IntelliJ Default
Setter template: IntelliJ Default

单击标签为“…”的“Getter Template”右侧的按钮,您可以看到模板代码包括以下内容:

#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
  #set($name = $StringUtil.decapitalize($name))
#else
  is##

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

至于原因,有一个用于布尔字段的javabeans标准,其中名为(例如)boolean enabled的字段的getter可以是isEnabled(),而不是getEnabled(),这肯定与此相关。

 类似资料:
  • 我在IntelliJ中为setter创建了一个自定义模板。当我使用Alt Insert时,我可以选择该模板,而且效果很好。 但是,当我尝试按Alt-Enter生成缺少的setter时,它使用IntelliJ默认值。 如何使Alt Enter完成使用我的自定义模板而不是默认?

  • 问题内容: 例如。 您将其命名为getter和setter吗? 问题答案: 假设你有 访问器方法将是 也可以看看 Java编程/ Java Bean Java编程语言的代码约定

  • 问题内容: 我有一个使用默认名称空间打印的文件。元素以ns2前缀打印,我需要将其删除,以及与我的代码的关系: 我希望它是: 这就是我的编码方式,据我所知,这足以使ns2消失: 生成的package-info结果如下: 我创建如下文件: generateClassesPackage是其中package-info.java及其元素所在的包。 Foo对象已定义,并具有以下元素: 我错过了吗?还是我误解了

  • 我有一个扩展JTextField的类,我想让CTRL-Shift-O做一些事情。我一直在听 在e.isControlDown()和e.isShiftDown()的帮助下,这种方法运行良好。但我注意到字段中的文本也在从左边向右边移动。显然,这是JTextField的默认行为。所以我在So上找到了这个线程,它似乎很有帮助: 如何禁用JTextField中的默认textfield快捷方式 尽管Syste

  • This function is called when a template cannot be obtained from its resource. 该函数在模板不能从它的源目录下获取时会得到调用.

  • 我们想断言,自定义对象列表包含一个对象,其某些字段具有特定的值,以及一系列类似这样的断言 然而,自定义对象也有布尔类型字段,其中getter方法有一个“is”前缀而不是“get”,在那里断言似乎在以下情况下失败 是否有现成的解决方案来克服这一点,或者它应该用某种自定义匹配器来处理?