MapleStory Cookie With Halo

☕ JAVA/☕ Class & Method

[JAVA]Optional<T>

뉴이 NUEY 2024. 12. 17. 02:02
반응형

 

Optional이란?
<T>타입의 래퍼클래스

 

 

  • <T>를 사용하기 때문에 모든 종류의 객체를 넣을 수 있다.

  • null을 다루는 것은 NullPointerException의 위험이 있는데, Optional을 통해 null을 간접적으로 안전하게 다룰 수 있다.

  • null을 Oprtional에 담아 사용하면, null이더라도 Optional객체를 반환하기에 예외발생의 위험이 사라진다.

 


 

생성하기
Optional.of(객체);

 

 

💡 null이 담긴 Optional을 만들 경우
Optional.empty()
Optional.ofNullable(null 혹은 null값인 참조객체)
로 만든다.
❗Optional.of(null)로 생성시 NullPointerException이 발생하므로 비권장.

 


 

값 가져오기
get() orElse() orElseGet() orElseThrow()

 

4가지 종류

 

사용 예시

 

  •  get()
    • null일 경우 예외발생.

  • orElse(null일 경우 반환할 거)
    • null일 경우 반환값 지정 가능.

  • orElseGet(람다식or메서드참조)
    • 람다식 or 메서드참조 사용가능.
  • orElseThrow(예외종류)
    • null일 경우 예외 종류 지정가능.

🌟 orElse()와 orElseGet()이 가장 많이 사용된다.
이 두 메서드의 차이는 orElseGet()은 람다식과 메서드참조를 사용한다는 점만 다르다.

 


 

isPresent()
: null이면 false, 아니면 true 반환.

 

 


 

ifPresent(람다식or메서드참조)
: null이 아닐 때만 작업 수행.

 

 


 

OptionalInt
OptionalLong
OptionalDouble
: 미리 타입이 지정되 Optional.
성능이 좀 더 좋다.

 

간단한 사용법.

 


 

Stream에서 사용하는 map() filter() 등을 가지고 있다.

 

 

※ Stream의 연산 메서드들

2024.12.16 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Thread]중간 연산-distinct() skip() limit() sorted()

2024.12.16 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Stream]중간 연산-map() peek() flatMap()

 


참조영상

반응형