2014-12-16 5 views
1

null 포인터 예외를 피하기 위해 Optional 클래스를 사용하는 것이 더 좋지만, 어쨌든 null 체크와 마찬가지로 예외가 발생하지 않도록하려면 optional.isPresent() 체크를 적용해야합니다.Guava의 Optional 클래스는 NPE에 어떤 도움이됩니까?

optional.or()을 사용하여 일부 기본값 또는 빈 개체로 대부분의 시간을 재정의하지 않으면 매우 유용하다는 것을 알 수 없습니다.

보고 싶지 않은 다른 이점이 있습니까? 그렇지 않으면 추가 오버 헤드가 발생하지 않고 쉽게 피할 수 있습니다.

+1

메서드에서 옵션을 반환하면 클라이언트가 강제로 명시 적으로 검사하도록합니다. – slnowak

+0

하지만 여전히 확인하지 않고 optional.get()을 호출 할 수 있으며 NullPointerException 대신 IllegalStateException을 발생시킵니다! – krmanish007

+1

하지만'get'을 호출해야한다는 사실은'isPresent'를 체크해야한다는 것을 상기시켜줍니다. 'Optional'이 없으면, 모든 것이 올바르지 않을 때 코드화하는 것이 더 낫습니다. –

답변

4

메소드에서 옵션을 반환하면 클라이언트가 명시 적으로 다시 점검 값을 지정하지 않아도됩니다.

당신이 당신의 방법을 사용하고 널 체크에 대해 기억하는 한 모든 것이 좋습니다.

이제 API를 사용한다고 가정합니다. 메소드가 null을 반환 할 수 있는지 여부를 어떻게 알 수 있습니까? 물론 javadoc을 읽지 않고. Optional을 반환 유형으로 본 경우 이러한 상황이 발생할 수 있으며 반응 할 수 있음을 정확히 알고 있습니다.