布尔getter方法的有效JavaBeans名称

时间:2009-04-28 18:30:48

标签: java boolean naming-conventions javabeans

我知道大多数变量名称都适用于“是”,例如isBlue(),但“has”也是有效前缀,例如hasProperty()

3 个答案:

答案 0 :(得分:71)

根据JavaBeans specification第8.3.2节:

  

布尔属性
  另外,为   布尔属性,我们允许一个getter   匹配模式的方法:

public boolean is<PropertyName>();

  这个   “isPropertyName”方法可能是   提供而不是   “get<PropertyName>”方法,或者它可以   除了a之外还提供   “get<PropertyName>”方法。在任何一个   case,如果是is<PropertyName>方法   然后出现一个布尔属性   我们将使用“is<PropertyName>”   读取属性值的方法。一个   示例布尔属性可能是:

     public boolean isMarsupial();   public void setMarsupial(boolean m);

换句话说,除非事情发生变化,否则has不是我担心的有效前缀:(

某些工具和库可能会识别出这些属性,但依赖它并不是一个好主意。

答案 1 :(得分:9)

Jon Skeet指出,根据规范,它无效。此外,canXshouldX和其他内容无效。这是相当不幸的。这是一种检查给定属性是否具有有效getter的方法:

BeanInfo info = Introspector.getBeanInfo(Item.class);
Item itm = new Item();
for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
    System.out.println(pd.getName() + " : " + pd.getReadMethod());
}

Item应该是一个带有foo属性和getter的javabean。如果read方法是null,则表示根据javabeans规范没有定义有效的getter。

答案 2 :(得分:4)

这有些主观,但是,我会说“has”是布尔属性的完全有效前缀。

编辑问题,如所提到的,没有提到javabeans规范,所以我的答案没有解决问题的这个方面。因此上面的答案。