我知道大多数变量名会用"is"作为前缀,例如
isBlue()
,但是像hasProperty()
这样使用"has"作为前缀是否也是有效的?isBlue()
,但是像hasProperty()
这样使用"has"作为前缀是否也是有效的?public boolean is<PropertyName>();
。这个"isPropertyName
"方法可以代替一个"get<PropertyName>
"方法提供,或者除了一个"get<PropertyName>
"方法之外还可以提供。在任何一种情况下,如果is<PropertyName>
方法对于布尔属性存在,则我们将使用"is<PropertyName>
"方法读取属性值。一个布尔属性的例子可能是:
public boolean isMarsupial();
public void setMarsupial(boolean m);has
不是有效的前缀。isHasCar
听起来更奇怪吗(我不是以英语为母语的说)?在这种情况下,你的选择会是什么? - msa据规范,Jon Skeet指出此方法无效。同时,canX
、shouldX
等也是无效的。这真是令人遗憾。以下是一种检查给定属性是否具有有效getter的方法:
BeanInfo info = Introspector.getBeanInfo(Item.class);
for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
System.out.println(pd.getName() + " : " + pd.getReadMethod());
}
类Item
应该是一个JavaBean,具有一个名为foo的属性和一个getter。如果read方法为null
,则意味着根据JavaBeans规范未定义有效的getter。