布尔型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指出,根据规范,这是无效的。 另外, canX
, shouldX
和shouldX
无效。 这是相当不幸的。 这里有一个方法来检查一个给定的属性是否有一个有效的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规范,所以我的回答没有解决问题的这个方面。 因此上面的答案。