假设我有foo
课,其中Boolean
(不是boolean
)变量bar
:
class foo {
Boolean bar;
Boolean isBar(){
return bar;
}
boolean isBar(){
return bar.booleanValue();
}
}
上述哪种方法在Java中是正确的方法。
我知道两者都有效,但我想知道Java中关于这个问题的编码约定是什么?
答案 0 :(得分:11)
如果您实际使用的是布尔类型,那么您的方法应该是
Boolean getBar(){
return bar;
}
否则你的字段应该是原始的布尔类型。
答案 1 :(得分:3)
boolean
是基元,可以是true
或false
。 Boolean是boolean
的对象包装。 Boolean
可以是 true , false 和 null 。除非您需要此null
,否则请使用boolean
,因为内存会更便宜。
Boolean
有很多辅助方法,例如,你可以使用Boolean.valueOf(theString);
来使用String中的布尔值,它可以是“false”或“true”,而不是
if("true".equals(theString))
primitiveBoolean = true;
答案 2 :(得分:1)
除非bar
可以是null
,并且这是您想要在班级中建模的内容,我会使用:
class foo {
boolean bar;
boolean isBar(){
return bar;
}
}
它更简单,更快速,无法拥有NullPointerException
s。
但是,如果null
是有效值且您想要模型,则应使用Boolean
/ Boolean
。
请注意您的代码:
Boolean bar;
boolean isBar() {
return bar.booleanValue();
}
甚至是自动装箱变体:
Boolean bar;
boolean isBar() {
return bar;
}
......可能会抛出NullPointerException
个。特别是最后一个非常令人困惑。