java中的布尔(Object)getters

时间:2013-06-13 07:37:32

标签: java coding-style

假设我有foo课,其中Boolean(不是boolean)变量bar

class foo {
    Boolean bar;

    Boolean isBar(){
        return bar;
    }

    boolean isBar(){
        return bar.booleanValue();
    }
}

上述哪种方法在Java中是正确的方法。

我知道两者都有效,但我想知道Java中关于这个问题的编码约定是什么?

3 个答案:

答案 0 :(得分:11)

如果您实际使用的是布尔类型,那么您的方法应该是

Boolean getBar(){
    return bar;
}

否则你的字段应该是原始的布尔类型。

答案 1 :(得分:3)

boolean是基元,可以是truefalseBooleanboolean对象包装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个。特别是最后一个非常令人困惑。