두 가지 코드 예제를 보자.
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
가장 분명한 차이점을 알 수있는 한, Optional은 추가 개체를 만들어야한다는 것입니다.
그러나 많은 사람들이 옵션을 빠르게 채택하기 시작했습니다. 널 (null) 검사와 비교하여 옵션을 사용하면 어떤 이점이 있습니까?
if
성명서가 너무 많기 때문에 모두 모나드 추상화와 람다를 사용하고 있기 때문 입니다.
if(x.isPresent) fails_on_null(x.get)
타입 시스템을 빠져 나가서 조건과 함수 호출 사이의 (거리가 짧은) 거리에서 코드가 "머리에서"깨지지 않도록 보장해야한다는 것입니다. 에서 optional.ifPresent(fails_on_null)
타입 시스템 당신이 보증을 만들고, 당신은 걱정할 필요가 없습니다.
Optional.ifPresent
(및 다양한 다른 Java 구문) 를 사용하는 Java의 주요 결함은 최종 변수 만 효과적으로 수정할 수 있으며 확인 된 예외를 throw 할 수 없다는 것입니다. ifPresent
불행히도 종종 피할 수있는 충분한 이유 입니다.