我知道大多数变量名都可以使用“is”,比如isBlue(),但是“has”也是一个有效的前缀吗,比如hasProperty()?
isBlue()
hasProperty()
zlwx9yxi1#
根据JavaBeans specification第8.3.2节:
布尔属性
此外,对于布尔属性,我们允许getter方法匹配以下模式:第一个月此“isPropertyName“方法可以代替“get<PropertyName>“方法提供,也可以与“get<PropertyName>“方法一起提供。在任一种情况下,如果布尔属性存在is<PropertyName>方法,则我们将使用“is<PropertyName>“方法读取属性值。布尔属性的示例可能是:公共布尔值isMarsupial();公共空集合有袋(布尔m);换句话说,除非从那时起发生了一些变化,否则has恐怕不是一个有效的前缀:(无论如何,一些工具和库可能会识别这样的属性,但依赖它不是一个好主意。
isPropertyName
get<PropertyName>
is<PropertyName>
has
y4ekin9u2#
Jon Skeet指出,根据规范,它是无效的。此外,canX、shouldX等也是无效的。这是相当不幸的。下面是一种检查给定属性是否具有有效getter的方法:
canX
shouldX
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。
Item
null
pcrecxhr3#
这有点主观,但是是的,我想说“has”是布尔属性的一个完全有效的前缀。
编辑这个问题没有提到javabeans规范,所以我的回答也没有涉及到这个问题,所以才有了上面的回答。
3条答案
按热度按时间zlwx9yxi1#
根据JavaBeans specification第8.3.2节:
布尔属性
此外,对于布尔属性,我们允许getter方法匹配以下模式:
第一个月
此“
isPropertyName
“方法可以代替“get<PropertyName>
“方法提供,也可以与“get<PropertyName>
“方法一起提供。在任一种情况下,如果布尔属性存在is<PropertyName>
方法,则我们将使用“is<PropertyName>
“方法读取属性值。布尔属性的示例可能是:公共布尔值isMarsupial();公共空集合有袋(布尔m);
换句话说,除非从那时起发生了一些变化,否则
has
恐怕不是一个有效的前缀:(无论如何,一些工具和库可能会识别这样的属性,但依赖它不是一个好主意。
y4ekin9u2#
Jon Skeet指出,根据规范,它是无效的。此外,
canX
、shouldX
等也是无效的。这是相当不幸的。下面是一种检查给定属性是否具有有效getter的方法:类
Item
应该是一个带有foo属性和getter的javabean,如果read方法是null
,这意味着没有根据javabeans规范定义有效的getter。pcrecxhr3#
这有点主观,但是是的,我想说“has”是布尔属性的一个完全有效的前缀。
编辑这个问题没有提到javabeans规范,所以我的回答也没有涉及到这个问题,所以才有了上面的回答。