Optional이 등장한 계기 :

 

 메소드가 반환할 결과 값이 '없음'을 명백하게 표현할 필요가 있고, null 을 반환하면 에러가 발생할 가능성이 높은 상황에서 메소드의 반환 타입으로 Optional 을 사용하자는 것이 Optional 을 만든 주된 목적이다.
Optional 타입의 변수의 값은 절대 null 이어서는 안 되며, 항상 Optional 인스턴스를 가리켜야 한다.

 

 

Optional<T> 생성, 선언

   @Override
   public Optional<Member> findById(Long id) {
        return Optional.ofNullable(store.get(id)); //Null값 까지 받을 수 있음-> Null이면 Empty 객체 생성
        
        //Optional.of(T) -> 명시한 T값을 가지고 있는 객체 생성, Null일 경우 Error
        //Optional.empty() ->비어있는 객체 생성
    }

 

 

isPresent(True or False), ifPresent(Consumer<? super T> action)

  값이 존재하면 True or False, 값이 존재하면 action을 취하라

    private void validateDuplicateMember(Member member) {
        memberRepository.findByName(member.getName())
                        .ifPresent(m ->{
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        });
    }

 

옵셔널을 활용한 NPE 지옥 탈출하기

 

https://www.daleseo.com/java8-optional-before/

 

자바8 Optional 1부: 빠져나올 수 없는 null 처리의 늪

Engineering Blog by Dale Seo

www.daleseo.com

 

옵셔녈 관련 Optional<> 

 

 

옵션 커맨드 화살표 (화면 이동? 전환?)

옵션 커맨드 v (반환값을 받을 변수 자동생성?)

illegalstateException (테스트 예외처리)

컨트롤 r (이전 실행 실행)

 

 

 

https://dev-coco.tistory.com/178

 

[Java] Optional 올바르게 사용하기

개요 Java 언어 설계자인 Brian Goetz는 Optional 을 만든 의도를 다음과 같이 공식 API 문서에 작성해 두었다. API Note: Optional is primarily intended for use as a method return type where there is a clear need to represent "no re

dev-coco.tistory.com