以“is”为前缀的布尔属性名称仍然是有效的 Java Bean 吗?

2024-03-21

我刚刚注意到一些我不知道的事情。

  private boolean isCertified;

  public boolean isCertified() {
    return isCertified;
  }

  public void setCertified(boolean certified) {
    isCertified = certified;
  }

以下 getter 和 setter 是由 Intellij 生成的。顺便说一句,Lombok 生成相同类型的 getter 和 setter。

我本来期望的是这样的:

  private boolean isCertified;

  public boolean isIsCertified() {
    return isCertified;
  }

  public void setIsCertified(boolean certified) {
    isCertified = certified;
  }

这就是为什么我通常不为布尔属性添加前缀ìs,尽管我认为属性名称变得更具可读性。

我通常会写这样的内容:

  private boolean certified;

  public boolean isCertified() {
    return certified;
  }

  public void setCertified(boolean certified) {
    certified = certified;
  }

所以我想知道:

  • 拥有一个名为isXXX和一个吸气剂isXXX代替isIsXXX:这是一个有效的 Java Bean 定义吗?

  • 是否还有其他类似的隐藏 Java Bean 极端情况,我可能想知道这些情况以提高代码可读性?

Thanks


AFAIK,字段的命名模式不是 JavaBeans 规范的一部分。

JavaBeans 规范指定了(除其他外)“属性”概念。

类的属性由类的方法(以某种模式命名)来标识。

这些字段是无关紧要的。事实上,甚至不需要有一个属性字段。

也就是说,以属性名称命名字段仍然是一个好习惯。需要访问这些字段的工具(例如 IDE 中的重构支持)正确处理这些字段的可能性更大。

具有名为 isXXX 的属性和 isXXX 而不是 isIsXXX 的 getter:它是有效的 Java Bean 定义吗?

不,属性的 getterisXXX需要isIsXXX()(对于布尔值)或getIsXXX().

但情况又反过来了。

如果你有方法:

boolean isXyz()

那么你就有了一个可读的属性xyz.

如果你有方法

boolean isIsXyz()

那么你就有了一个可读的属性isXyz.

欲了解更多信息,请查看内省者 http://docs.oracle.com/javase/7/docs/api/java/beans/Introspector.html类,该tutorial http://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html或 JavaBeans 规范:

http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html

http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以“is”为前缀的布尔属性名称仍然是有效的 Java Bean 吗? 的相关文章

随机推荐