Optional.of.OfNullable보다 Optional.of를 사용하는 이유
Java 8을 사용하는 경우Optional
class, 값을 옵션으로 래핑할 수 있는 방법은 두 가지가 있습니다.
String foobar = <value or null>;
Optional.of(foobar); // May throw NullPointerException
Optional.ofNullable(foobar); // Safe from NullPointerException
알겠습니다.Optional.ofNullable
안전한 유일한 사용법입니다.Optional
, 하지만 왜?Optional.of
존재합니까?왜 그냥 사용하지 않는 거죠?Optional.ofNullable
항상 안전할 수 있도록 해야 할까요?
질문의 근거는, 코드를 송신할 가능성이 있는 경우입니다.NullPointerException
그렇지 않을 수도 있는 코드보다 더 심합니다.이 가정은 틀렸다.만약 당신이 그걸 기대한다면foobar
프로그램 로직으로 인해 null이 되지 않습니다.사용하는 것이 훨씬 좋습니다.Optional.of(foobar)
보다시피NullPointerException
프로그램에 버그가 있음을 나타냅니다.사용하시는 경우Optional.ofNullable(foobar)
및 그foobar
공교롭게도null
버그로 인해 프로그램이 계속 잘못 작동하게 되어 더 큰 재앙이 될 수 있습니다.이렇게 하면 오류가 훨씬 나중에 발생할 수 있으며 어느 시점에서 오류가 발생했는지 이해하는 것이 훨씬 더 어려워집니다.
또한 객체가 null인 경우 코드가 작동하지 않아야 한다는 것을 알고 있는 경우 다음을 사용하여 예외를 발생시킬 수 있습니다.
String nullName = null;
String name = Optional.ofNullable(nullName)
.orElseThrow(NullPointerException::new);
// .orElseThrow(CustomException::new);
이것은 시나리오에 따라 다릅니다.
예를 들어, 비즈니스 기능이 몇 가지 있는데, 그 가치를 가지고 있지만, 그 가치를 가진 것을 처리할 필요가 있다고 가정해 봅시다.null
처리 시점의 값이 영향을 미칠 수 있습니다.
그러면 이 경우,Optional<?>
.
String nullName = null;
String name = Optional.ofNullable(nullName)
.map(<doSomething>)
.orElse("Default value in case of null");
옵션 기능은 서비스 결과에 주로 사용해야 합니다.서비스에서는 수중에 있는 것을 알고, 결과가 있으면 Optional.of(someValue)를 반환하고, 결과가 없으면 Optional.empty()를 반환합니다.이 경우 someValue는 null이 아니어도 Optional이 반환됩니다.
언급URL : https://stackoverflow.com/questions/31696485/why-use-optional-of-over-optional-ofnullable
'IT이야기' 카테고리의 다른 글
두 개의 큰 정수를 곱하는 동안 오버플로우 포착 및 계산 (0) | 2022.05.28 |
---|---|
vuex의 저장 상태가 localStorage에 저장되지 않는 이유는 무엇입니까? (0) | 2022.05.28 |
x86_64 어셈블러에서 RBP 레지스터의 목적은 무엇입니까? (0) | 2022.05.28 |
스프링 부트 명령줄에서 활성 프로파일 및 구성 위치 설정 (0) | 2022.05.28 |
vuejs spa 및 laravel api 구글 사인인 (0) | 2022.05.28 |