[Java] Null-Safe하게 Optional을 사용하는 방법
NullSafe 하게 Optional 함수를 반환하는 방법에 대해서 알아보겠다.
일단, 반환값이 int / long / double 이라면 Optianl<> 을 사용하는 것보다 OptionalInt / OptionalLong / OptionalDouble을 사용하는 것이 좋다.
아래 예제의 getSumOfNum은 리스트에 특정 숫자를 포함한 원소를 필터링하여 총 합을 구하는 함수이다.
예시코드
OptionalInt optionalSum = getSumOfNum("2"); Integer sumOfNum = optionalSum.orElse(0); // same as optionalSum == nul ? 0 : optionalSum; public static OptionalInt getSumOfNum(String n) { List<String> strNum = List.of("144", "234", "222", "555", "777"); Integer sumOfNum = strNum.stream() .filter(x -> x.contains(n)) .mapToInt( value -> Integer.parseInt(value)) .sum(); return sumOfNum == null ? OptionalInt.empty() : OptionalInt.of(sumOfNum); }
결론부터 말하면, Optional.ofNullable()의 사용을 지양하는 것이 Null-Safe한 방법이다.
총 합이 null이면 null이 아닌 OptionalInt.empty()를 반환해주고, null이 아니면 OptionalInt.of()를 반환 해준다.
함수를 사용하여 값을 받아오는 OptionalSum은 OptionalInt로 받아오고, sumOfNum에서 orElse()를 사용한다.
이로써 Optional.ofNullable()를 사용하지 않는 것이 Null-Safe 한 방법이다.
참고
Optional에서는 Optional.of()는 Optional.ofNullable()과는 다르게 값이 null이 아님이 확실한 경우에만 사용한다. (null이 들어오면 NPE를 뱉는다.)
Author And Source
이 문제에 관하여([Java] Null-Safe하게 Optional을 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sloools/Java-Null-Safe하게-Optional을-사용하는-방법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)