[TIL] 2022.11.30

rara_kim·2022년 11월 30일
0

TIL

목록 보기
21/25

개인 과제를 진행하며 사용은 했지만 잘 모르던 개념들에 대해 찾아보고 정리하고 있다.
모르는게 너무 많아...😂

💡기억해두기

Optional이란?

자바로 프로그래밍 하다보면 정의되지 않은 객체에 대해 null값을 고려하게 되는 경우가 발생한다.
안정적인 실행을 위해서는 null값을 처리해 NullPointerException가 발생하지 않게 체크해야 한다.
단순한 코드라면 짧은 로직으로 처리할 수 있지만, 스케일이 커질 수록 고려해야할 변수가 많아지고, 그만큼 null 체크 로직이 길어지게 된다.(if, else, ifelse 등...)

이러한 상황을 위해 자바에서는 Optional<T> 클래스를 도입하여 NullPointerException을 방지할 수 있도록 도와준다.
Optional은 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, NullPointerException이 발생하지 않도록 도와준다.
Optional 클래스는 아래 예제처럼 value에 값을 저장하기 때문에 null이더라도 바로 NullPointerException이 발생하지 않으며, 각종 메서드를 제공한다.

public final class Optional<T> {
	private final T value;
}

Optional의 메소드(orElse와 orElseGet, orElseThrow)

Optional API의 단말 연산에는 orElse와 orElseGet메서드가 있다.

orElse

  • Optional 안의 값이 null이든 아니든 항상 호출.
  • orElse는 value값이 null일 때는 default값을 넣어서 사용한다.
  • 그에 따라 Unique한 객체들에는 주의해서 사용해야 한다.
  • 값이 미리 존재하는 경우에 사용한다.

orElseGet

  • Optional 안의 값이 null일 경우에만 호출.
  • orElseGet 은 값을 만들어내는 Supplier 를 파라미터로 넘겨준다.
  • 값이 존재 하지 않을 때 supplier를 실행하여 값을 만들어 낸다.

orElseThrow

  • orElse throw는 overload된 두 가지 메소드가 존재하는데, 하나는 파라미터가 빈값이고 나머지 하나는 Supplier로 error를 넘겨준 경우이다.

💡Optional 에서 메소드를 사용할 때 주의사항
default Value를 만드는 방법이 함수이면 -> orElseGet
default Value가 그냥 정의되는 값이면 -> orElse

profile
느리더라도 꾸준하게

0개의 댓글