인프런 강의를 보면서 따라하다가 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 |
댓글