개요 자바 8 이전, 즉 Optional이 존재하기 이전에는 메서드가 특정 조건에서 값을 반환하지 못할 때 취할 수 있는 두 가지 선택지가 있었다. 하지만 각각 가지고 있는 허점이 존재했다. 1. 예외를 던진다. 예외는 되도록 진짜 예외인 상황에서만 사용해야 하고, 예외가 발생할 때 스택 추적 전체를 캡쳐하므로 다소 비용이 크다. 2. null을 반환한다. 별도의 null 처리를 해야 한다. 그렇지 않다면 언젠가 null이 발생한 근원지와는 상관없는 곳에서 NullPointException이 발생할 것이다. 위같은 문제를 해결하기 위해 Optional이 등장했다. Optional Optional는 null이 아닌 T 타입 참조를 하나 담거나, 아무것도 담지 않을 수 있다. 또한 Optional는 위와 같..