布尔型getter方法的有效JavaBeans名称

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我知道大多数变量名称将与“is”一起工作,例如isBlue(),但是“has”也有一个有效的前缀,比如hasProperty()

提问于
用户回答回答于

Jon Skeet指出,根据规范它是无效的。此外,canXshouldX,和喜欢是无效的。这是相当不幸的。以下是检查给定属性是否具有有效吸气剂的方法:

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

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

用户回答回答于

根据JavaBeans规范第8.3.2节:

布尔属性 另外,对于布尔属性,我们允许getter方法匹配模式: public boolean is<PropertyName>(); 这个“ isPropertyName”方法可以被提供而不是“ get<PropertyName>”方法,或者除了get<PropertyName>方法之外可以被提供。无论哪种情况,如果该is<PropertyName>方法存在于布尔属性中,那么我们将使用“ is<PropertyName>”方法来读取属性值。一个布尔属性的例子可能是: public boolean isMarsupial(); public void setMarsupial(boolean m);

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

这可能是一些工具和库无论如何都会认识到这种特性,但它不依赖于它是一个好主意。

扫码关注云+社区