본문 바로가기
DEV/JAVA

JAVA 8의 Optional 사용해보기

by 땅콩둘기 2021. 4. 14.
반응형

인프런 강의를 보면서 따라하다가 Optional을 보게되었습니다. 

JAVA를 사용중이지만 JAVA8은 아직도 따라가려면 먼것 같습니다.😥


Optional의 탄생

흔히들 null의 저주라고 하는데 JAVA로 개발하다보면 NullPointException으로 부터 자유로울수 없습니다.

Optional은 JAVA8에서 새로나온 null 처리를 할 수 있는 래퍼 클래스라고 합니다. 

그래서 예상치 못한 NullPointerException 예외를 제공되는 메소드로 NPE를 회피할 수 있게 되었습니다. 더이상 복잡한 조건문 없이도 Null 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다.

 


Optional 객체 생성

Optional<String> opt1 = Optional.empty();

Optional<String> opt2 = Optional.of("자바 Optional 객체1");

Optional<String> opt3 = Optional.ofNullable("자바 Optional 객체2");

System.out.println(opt3.get());

 

💥empty() 메소드       : 빈 객체

💥of() 메소드             : 명시된 값 ≠ null -> 명시된 값을 가지는 Optional 객체

                                명시된 값 = null -> NullPointerException 예외가 발생

💥 ofNullable() 메소드 : 명시된 값 ≠ null -> 명시된 값을 가지는 Optional 객체

                                명시된 값 = null -> 비어있는 Optional 객체

 

⭐ 따라서 객체가 Null일 수 있다면 ofNullable()로 선언하는것이 예외를 막을 수 있습니다!

 

Optional 객체에 접근

if(opt3.isPresent()) {

    System.out.println(opt3.get());

}

💥 isPresent() 메소드 : Optional 객체에 저장된 값이 null인지 아닌지 확인하는 메소드로 bool 타입으로 반환

💥 get() 메소드 : Optional 객체에 저장된 값에 접근

 

Optional 객체에 저장된 값이 null이면, NoSuchElementException 예외가 발생합니다. 그러므로 isPresent() 메소드를 사용해 null인지 확인하고 객체에 접근하는 것을 권장합니다.

 

ifPresent() 메소드

Optional<String> opt = get("자바객체");
opt.ifPresent(member -> {
	System.out.println("length: " + member.length());
});

💥 ifPresent() 메소드 : 특정 결과를 반환하는 대신에 Optional 객체가 감싸고 있는 값이 존재할 경우에만 실행될 로직을 함수형 인자로 반환

 

⭐ifPresent()를 사용하면 람다식으로 활용해 Null체크 없이 사용할 수 객체를 사용할 수 있습니다.

 

 

 

🎈🎈Optional을 잘 활용하면 null체크를 Optional에 위임할 수 있다고 하는데 아직 잘 이해하지 못해서 이해하면 더 자세히 적어보도록 하겠습니다~!

 

 

반응형

'DEV > JAVA' 카테고리의 다른 글

스프링부트 사용하기  (0) 2021.06.03
스프링부트 CLI 시작하기  (0) 2021.05.19
JAVA로 하샤드 수 구현하기  (0) 2021.05.01
JAVA로 369게임 만들기  (0) 2021.04.30
JUnit 테스트 해보기  (0) 2021.04.14

댓글