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))String을 반환 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 ()는 null이 아닌 경우 객체의 toStirng ()를 반환하거나 "null"문자열을 반환합니다.

String 클래스에서 바로 :

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

그것은 당신의 주장에서 당신이 "null"을 테스트하고 있다는 것을 의미합니다.