我注意到,对于返回Boolean
(而非boolean
!)的getter,netbeans会生成getter,其中包含" get"字首。例如:
private Boolean main;
public Boolean getMain(){
return this.main;
}
这是错的(根据命名惯例)?或者"是"仅为基本类型的前缀?
答案 0 :(得分:6)
Netbeans在这里没有错 - 因为Boolean
对象属性get
是正确的。一方面,属性值可以是null
,在这种情况下is
是没有意义的。
javabeans spec允许is
类型boolean
作为特例,不提及 Boolean
。假设此特殊情况扩展到Boolean
个对象将无效。
答案 1 :(得分:5)
以下是实际JavaBeans specification document:
的引用8.3.2布尔属性
此外,对于布尔属性,我们允许getter方法匹配模式:
public boolean is<PropertyName>();
可以提供此
is<PropertyName>
方法而不是get<PropertyName>
方法,或者除了get<PropertyName>
方法之外,还可以提供此方法。在任何一种情况下,如果布尔属性存在is<PropertyName>
方法,那么我们将使用is<PropertyName>
方法读取属性值。
请注意,这适用于boolean
而非Boolean
值。另请注意,is
是允许的替代到get
,而get
始终是合适的。
答案 2 :(得分:1)
这取决于是否将包含该方法的类视为JavaBean。
如果您打算成为JavaBean,那么Marko Topolnik's answer是准确的。
否则就没有对错。是否应使用get
或is
(或其他内容)取决于方法的合同和目的。伊兰的第一个评论是现场评论:
这里没有对错。我认为isMain或hasMain或supportsMain(主要意味着什么)更具描述性。我不认为它应该是一个不同的布尔值或布尔值。
你问这个约定是什么,并且我说惯例是将方法命名为描述性和语义准确。
详细说明是 vs get :
如果该方法旨在作为资本-B Boolean
属性的一般访问者,使其具有值null
,则使用get
更有意义。< / p>
如果该方法旨在给出内部(在本例中为private
)非空标志的状态,我认为is
将是一个合适的前缀。 (虽然我可能会使用boolean
作为返回值,除非有一个常见的用例例如isMain().hashCode()
或类似的东西。)
答案 3 :(得分:0)
在Boolean
对象上,您可以应用多种方法:toString
,equals
,valueOf
..
您的问题没有完整的答案,这实际上取决于使用情况以及调用方法的人。有意义:
public boolean isMain(){
return this.main.booleanValue();
}
但如果您的逻辑没有确保main
可以有null
值,则get
是一个很好的前缀。
答案 4 :(得分:0)
这是对的。 Boolean是原始数据类型boolean的包装类。所以布尔会返回对象。对象也使用相同的get
,就像原始数据类型一样。
答案 5 :(得分:0)
根据OCP Oracle认证专业Java SE 8程序员II学习指南书
以下哪项可以正确包含在JavaBean中?
public boolean isPlaying() { return playing; }
public boolean getPlaying() { return playing; }
public Boolean isDancing() { return dancing; }
第一行是正确的,因为它为布尔变量定义了正确的getter。 第二个示例也是正确的,因为布尔型可以使用is或get。 第三行是 错误,因为布尔包装器是对象,因此应该以get开头。