반응형
이전 포스팅에서 Optional 에 대한 내용을 다룬적이 있다.
자세한 내용은 아래 참고 포스팅 참고 바란다.
Optional 은 결국엔 NPE 를 해결하기 위해서 생겨났고,
만약 Null일 경우엔 default 값을 넣어줄수 있는 개념으로 만들어진 함수가 바로 이
orElse / orElseGet 이다.
결국 둘다 null일때 default 를 받을건데 둘의 차이는 어떤것인지 확인해보면
orElse() : T 클래스를 인수로 받음
orElseGet() : T 클래스를 상속받은 하위 클래스를 return해주는 Supplier 함수 인터페이스를 받음
좀더 이해하기 쉽게 예시를 들어서 설명하면 다음과 같다.
orElse
Optional<String> text = "a"; Sting bb = text.orElse(testMethod()); Sting cc = text.orElseGet(testMethod()); |
이렇게 bb 와 cc가 있다.
하지만 현재 text는 값이 있는 상황이다.
이럴 경우 orElse는 testMethod()가 호출이 되고.
orElseGet에 있는 testMethod()는 호출이 되지않는다.
사용시에는 유의해서 사용을 해야한다.
또한 메서드 뿐 아니라 객체를 사용할때는 객체를 담을수도 있다.
Optional<OptionalDto> ddd = Optional.ofNullable(OptionalDto.builder().name("AAA").build()); OptionalDto d = new OptionalDto(null); OptionalDto dto = ddd.orElse(d); |
참고 포스팅
https://thenicesj.tistory.com/306
반응형
'IT > Java' 카테고리의 다른 글
@PostConstruct, @PreDestroy 어노테이션 (39) | 2023.06.20 |
---|---|
JVM 내에 저장되어있는 데이터 위치 값 확인 (32) | 2023.06.18 |
[eclipse] Ant 란? (36) | 2023.06.15 |
Java 에서의 정규 표현식 (38) | 2023.06.14 |
자바에서 Null 체크 관련(if) (44) | 2023.06.09 |
댓글