簡體   English   中英

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

[英]Why does org.apache.commons.lang.BooleanUtils.isTrue(Boolean bool) use the ternary operator?

我沒有特別的原因對此進行過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();
    }

這並不重要,所以我想知道它有什么好處嗎? 可讀性是一個足夠弱的論點,我認為這是噪音。 除非我遺失了一些其他好處。

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

Java的API規范說:

public boolean booleanValue()

以布爾基元的形式返回此Boolean對象的值。

所以如果我們的bool對象是:

Boolean bool = new Boolean(true);

這相當於:

bool.booleanValue() == true;

這里的三元比較器是冗余的,降低了可讀性。

在您的代碼中,您可以減少一個原子操作。 有關詳細說明,請參閱此處: https//stackoverflow.com/a/493258/1509129

我不認為這是為什么這樣寫的最終答案,因為正如費利佩·費爾南德斯指出的那樣,沒有任何功能上的理由

但是,我的猜測是,要使方法與同一個類中的其他人對稱,返回Boolean對象,例如toBooleanObject

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM