为什么org.apache.commons.lang.BooleanUtils.isTrue(Boolean bool)使用三元运算符?

时间:2012-10-11 09:46:39

标签: java readability

我没有特别的原因对此进行过F3,并且惊讶地发现这种方法实现如下:

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();
    }

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

3 个答案:

答案 0 :(得分:2)

我找不到任何合理的理由。

Java的API规范说:

  

public boolean booleanValue()

     

将此Boolean对象的值作为布尔基元返回。

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

Boolean bool = new Boolean(true);

这相当于:

bool.booleanValue() == true;

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

答案 1 :(得分:1)

在代码中肯定会减少一次原子操作。 请参阅此以获得更好的解释:https://stackoverflow.com/a/493258/1509129

答案 2 :(得分:0)

我认为没有最终答案为什么它是这样编写的,因为as FelipeFernández指出没有功能上的理由

但是,我的猜测是,要使方法与同一个类中的其他人对称,返回Boolean对象,例如toBooleanObject

public static Boolean toBooleanObject(boolean bool) {
        return bool ? Boolean.TRUE : Boolean.FALSE;
}