Java/Java 공부

Optional 객체에 get()으로 접근

민철킹 2021. 6. 10. 21:29

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

 

Optional (Java Platform SE 8 )

A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value. Additional methods that depend on the presence or absence of a contained value are provided, such as orEl

docs.oracle.com

 

A container object which may or may not contain a non-null value.
- 공식 문서

Optional이란 자바8부터 추가된 Wrapper Class이다. 쉽게 말해 null을 담을 수 있다. 모든 타입의 참조 변수를 저장할 수 있으므로 만약 null 값이 들어올 가능성이 있다면 Optional로 감써서 사용하는 것이 좋다.

가장 무서운 에러인 NullPointerException을 회피할 수 있다.

 

Optional에서 사용할 수 있는 메서드는 매우 많은데 필요하다면 공식문서를 참조하자!

 

Optional 객체에 접근할 수 있는 메서드는 다양하게 존재하는데 그 중 가장 간단해보이는 get에 대해 알아보려한다.자바를 공부해본 사람이라면 Optional 객체에 get으로 바로 접근하는 것은 좋지않다라는 말을 들어본적이 있을 것이다. 그 이유가 무엇일까?

 

그 이유는 만약 Optional에 null 값이 담겨있을 때 get으로 접근하게되면 NoSuchElementException 예외가 발생하게 된다. 따라서 null 값을 체크한 후에 get으로 접근하거나, 제공되는 null 처리 메서드를 사용하도록 한다.

  1. orElse() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환함.
  2. orElseGet() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환함.
  3. orElseThrow() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생시킴.

 

반응형

'Java > Java 공부' 카테고리의 다른 글

Long 과 long 무엇이 다를까❓❓❓  (0) 2021.03.04
자바 enum❓❓  (0) 2021.03.02