Optional.of와 Optional.ofNullable은 서로 다른 사용 사례에 적합합니다. 이 두 메소드의 안전성은 그들이 사용되는 맥락에 따라 달라집니다.
- Optional.of:
- Optional.of 메소드는 null이 아닌 객체에 대해 Optional 객체를 생성합니다.
- 인자로 null이 전달되면 NullPointerException을 발생시킵니다.
- 따라서, 이 메소드는 null이 될 수 없는 값에 대해 사용할 때 안전합니다.
- Optional.ofNullable:
- Optional.ofNullable 메소드는 null일 수도 있는 객체에 대해 Optional 객체를 생성합니다.
- 인자로 null이 전달되면 비어 있는 Optional 객체를 반환합니다.
- 이 메소드는 인자가 null일 가능성이 있을 때 사용하는 것이 안전합니다.
어느 것이 더 안전한가?
- null 가능성이 있는 경우: Optional.ofNullable을 사용하는 것이 안전합니다. 이 메소드는 null 값을 안전하게 처리하고, null이 전달될 경우 비어 있는 Optional을 반환합니다.
- null이 아닌 경우: Optional.of를 사용할 수 있습니다. 이 경우에는 null이 아님을 확신할 수 있으므로, Optional.of를 사용하여 Optional 객체를 생성하는 것이 적합합니다.
사용 예시:
javaCopy code
// null이 아닌 객체에 대해서는 Optional.of를 사용 String notNullValue = "Hello"; Optional<String> opt1 = Optional.of(notNullValue); // null일 수도 있는 객체에 대해서는 Optional.ofNullable을 사용 String nullableValue = ...; // null일 수도 있는 값 Optional<String> opt2 = Optional.ofNullable(nullableValue);
결론적으로, 두 메소드 중 어느 것이 더 안전한지는 사용하는 값의 특성에 따라 달라집니다. 값이 null이 될 수 있다면 Optional.ofNullable을, 그렇지 않다면 Optional.of를 사용하는 것이 좋습니다.
'클린코드 체크' 카테고리의 다른 글
리팩토링 실습 (0) | 2023.12.05 |
---|---|
[우아한테크세미나] 190620 우아한객체지향 by 우아한형제들 개발실장 조영호님 (0) | 2023.12.04 |
stream.toList와 stream.collect(toList)차이 (0) | 2023.12.02 |
좋은 코드 나쁜 코드 (0) | 2023.11.23 |
명시적 조인, 묵시적 조인 (0) | 2023.11.08 |