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

我知道大多数variables的名称将与“is”,如isBlue() ,但是“有”也有效的前缀,如hasProperty()

根据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);

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

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

Jon Skeet指出,根据规范,这是无效的。 另外, canXshouldXshouldX无效。 这是相当不幸的。 这里有一个方法来检查一个给定的属性是否有一个有效的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属性的javabean和一个getter。 如果read方法为null ,则表示根据javabeans规范没有定义有效的getter。

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

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