11

我无缘无故进入了这个,很惊讶地看到这个方法实现如下:

public static boolean isTrue(Boolean bool) {
        if (bool == null) {
            return false;
        }
        return bool.booleanValue() ? true : false;
    }

为什么不?

public static boolean isTrue(Boolean bool) {
        if (bool == null) {
            return false;
        }
        return bool.booleanValue();
    }

没关系,所以我想知道它有什么好处吗?可读性是一个足够弱的论据,我认为这是噪音。除非我缺少其他一些好处。

4

3 回答 3

2

我找不到任何正当的理由。

Java 的 API 规范说:

公共布尔布尔值()

将此布尔对象的值作为布尔原语返回。

所以如果我们的 bool 对象是:

Boolean bool = new Boolean(true);

这是等价的:

bool.booleanValue() == true;

这里的三元比较器是多余的,降低了可读性。

于 2012-10-11T10:13:31.120 回答
1

可以肯定的是,在您的代码中,您少了一个原子操作。请参阅此以获得良好的解释:https ://stackoverflow.com/a/493258/1509129

于 2012-10-11T10:09:33.640 回答
0

我认为为什么要这样写没有最终答案,因为正如 Felipe Fernández 指出的那样,没有功能上的理由这样做

但是,我的猜测是,这样做是为了使该方法与同一类返回Boolean对象中的其他方法对称,例如toBooleanObject

public static Boolean toBooleanObject(boolean bool) {
        return bool ? Boolean.TRUE : Boolean.FALSE;
}
于 2017-07-18T14:38:21.353 回答