5

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

class foo {
    Boolean bar;

    Boolean isBar(){
        return bar;
    }

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

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

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

4

3 回答 3

11

如果您实际上将使用布尔类型,则您的方法应该是

Boolean getBar(){
    return bar;
}

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

于 2013-06-13T07:41:02.797 回答
3

aboolean是一个基元,它可以是truefalseBoolean是. _ _ 可以是truefalsenull。除非你需要这个,否则使用它,因为它的内存更便宜。booleanBooleannullboolean

Boolean有许多辅助方法,例如,您可以使用Boolean.valueOf(theString);可以是“false”或“true”的字符串中的布尔值,而不是做

if("true".equals(theString)) 
    primitiveBoolean = true;
于 2013-06-13T07:51:44.880 回答
2

除非barcan be null,这是你想在课堂上建模的东西,我会使用:

class foo {
    boolean bar;

    boolean isBar(){
        return bar;
    }
}

它更简单,更快,并且不能有NullPointerExceptions。

但是,如果null它是一个有效值并且您想要对其建模,则应使用Boolean/ Boolean

请注意,您的代码:

Boolean bar;

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

甚至是自动装箱变体:

Boolean bar;

boolean isBar() {
    return bar;
}

...可能会抛出NullPointerExceptions。尤其是最后一个非常混乱。

于 2013-06-13T07:46:27.433 回答