Optional은 Java 8에서 도입된 클래스로, 값이 존재할 수도 있고 없을 수도 있는 컨테이너.
주로 NullPointerException을 방지하고자 할 때 사용
=> null인지 아닌지, 안전하게 판단하고 싶어서. 검증을 확실하게 하고 싶을 때.
권장 사용방법: getter에서만 쓰고, 비지니스로직에서는 나오지 않는게 맞음.
optional (한개의 객체)
== null 이 절대 성립이 안 함 : jpa에서는 절대 적용 안 됨. nullpointexception 발생하고 싶어도 발생을 못 함.
ofNullable() 메서드:
- Optional.ofNullable(T value) 메서드는 주어진 값이 null이 아니면 해당 값을 가지는 Optional 객체를 생성하고, 값이 null이면 빈 Optional을 생성합니다.
String value = "Hello";
Optional<String> optionalValue = Optional.ofNullable(value);
orElse() 메서드:
- orElse(T other) 메서드는 값이 존재하면 그 값을 반환하고, 값이 없으면 인자로 전달된 기본값을 반환합니다.
String value = null;
String result = Optional.ofNullable(value).orElse("Default");
orElseThrow() 메서드:
- orElseThrow(Supplier<? extends X> exceptionSupplier) 메서드는 값이 존재하면 그 값을 반환하고, 값이 없으면 인자로 전달된 예외를 발생시킵니다.
String value = null;
String result = Optional.ofNullable(value).orElseThrow(() -> new NoSuchElementException("Value is not present"));
ifPresent() 메서드:
- ifPresent(Consumer<? super T> consumer) 메서드는 값이 존재하면 해당 값을 소비하는데 사용됩니다. 값이 존재할 때만 특정 동작을 수행하고자 할 때 유용합니다.
String value = "Hello";
Optional.ofNullable(value).ifPresent(v -> System.out.println("Value is present: " + v));
- 파라미터에서 optional 을 받으면 안 되는 이유
- 널에서 안전하게 작업하자는 건데 이러면 안됨.
'프로젝트 > 새로이' 카테고리의 다른 글
Managed Language / Unmanaged Language (0) | 2023.12.07 |
---|---|
RuntimeException / IllegalArgumentException (1) | 2023.12.07 |
트랜젝션 (2) | 2023.12.04 |
Stream (3) | 2023.12.04 |