布尔getter方法的有效JavaBeans名称

dy1byipe  于 2023-01-07  发布在  Java
关注(0)|答案(3)|浏览(115)

我知道大多数变量名都可以使用“is”,比如isBlue(),但是“has”也是一个有效的前缀吗,比如hasProperty()

zlwx9yxi

zlwx9yxi1#

根据JavaBeans specification第8.3.2节:

布尔属性

此外,对于布尔属性,我们允许getter方法匹配以下模式:
第一个月
此“isPropertyName“方法可以代替“get<PropertyName>“方法提供,也可以与“get<PropertyName>“方法一起提供。在任一种情况下,如果布尔属性存在is<PropertyName>方法,则我们将使用“is<PropertyName>“方法读取属性值。布尔属性的示例可能是:
公共布尔值isMarsupial();公共空集合有袋(布尔m);
换句话说,除非从那时起发生了一些变化,否则has恐怕不是一个有效的前缀:(
无论如何,一些工具和库可能会识别这样的属性,但依赖它不是一个好主意。

y4ekin9u

y4ekin9u2#

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

BeanInfo info = Introspector.getBeanInfo(Item.class);

for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
    System.out.println(pd.getName() + " : " + pd.getReadMethod());
}

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

pcrecxhr

pcrecxhr3#

这有点主观,但是是的,我想说“has”是布尔属性的一个完全有效的前缀。

编辑这个问题没有提到javabeans规范,所以我的回答也没有涉及到这个问题,所以才有了上面的回答。

相关问题