布尔 getter 方法的有效 JavaBeans 名称
2022-08-31 14:48:00
我知道大多数变量名称将与“is”一起使用,例如,但是“has”也是一个有效的前缀,例如?isBlue()
hasProperty()
我知道大多数变量名称将与“is”一起使用,例如,但是“has”也是一个有效的前缀,例如?isBlue()
hasProperty()
根据 JavaBeans 规范 8.3.2 节:
布尔属性
此外,对于布尔属性,我们允许 getter 方法与模式匹配:
public boolean is<PropertyName>();
这种“”方法可以代替“”方法提供,或者它可以是除“”方法之外提供的。在任何一种情况下,如果布尔属性存在该方法,那么我们将使用“”方法来读取属性值。示例布尔属性可能是:
isPropertyName
get<PropertyName>
get<PropertyName>
is<PropertyName>
is<PropertyName>
公共布尔值 isMarsupial();公共 void setMarsupial(布尔 m);
换句话说,除非从那以后发生了一些变化,否则恐怕不是一个有效的前缀:(has
无论如何,某些工具和库都有可能识别此类属性,但依赖它不是一个好主意。
Jon Skeet指出,根据规范,这是无效的。此外,、 、 和类似项均无效。这是相当不幸的。以下是检查给定属性是否具有有效 getter 的方法:canX
shouldX
BeanInfo info = Introspector.getBeanInfo(Item.class);
Item itm = new Item();
for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
System.out.println(pd.getName() + " : " + pd.getReadMethod());
}
该类应该是具有 foo 属性的 javabean 和 getter。如果读取方法是 ,则表示没有根据 javabeans 规范定义的有效 getter。Item
null