Objects.isNull बनाम Optional.ofNullable [डुप्लिकेट]

Oct 21 2020

मेरे पास एक परीक्षण में उपयोग किए गए कोड का यह टुकड़ा है

if (Objects.isNull(o)) {
            return null;
        }
        return String.valueOf(o);   

और जब मैं इस कोड के टुकड़े को बदलूंगा

Optional.ofNullable(String.valueOf(o)).orElse(null);

मेरे परीक्षणों में यह दावा है:

Expecting: <"null">
to be equal to: <null>
but was not.

जवाब

2 ernest_k Oct 21 2020 at 17:12

Optional.ofNullable(String.valueOf(o))एक खाली विकल्प नहीं होगा जब o == null, क्योंकि String.valueOf(null)स्ट्रिंग लौटाता है "null"।

वैकल्पिक का सही उपयोग है:

Optional.ofNullable(o).map(String::valueOf).orElse(null);

ofNullable(null)एक खाली विकल्प कहां से बनाया जाएगा, जिसके कारण orElse(null)अंततः इसे लागू किया जाएगा।

1 ShekharKhairnar Oct 21 2020 at 17:11

String.valueOf () रिटर्न एक वस्तु की (या तो वापस) शून्य या वापस नहीं आता है

सीधे स्ट्रिंग क्लास से:

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

इसका मतलब यह है कि आपके जोर में आप "अशक्त" परीक्षण कर रहे हैं जो अशक्त हो जाता है।