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
Optional <T> κ°μ²΄λ?
Java 8 μμ λμ λ Wrapper ν΄λμ€μ΄λ€.
null κ°μ μ²λ¦¬νλλ° λμμ μ€λ€. (NPE λ₯Ό λ°©μ§νλ€. NullPointException
)
- κ°μ΄ μμ μ μλ κ²½μ°μ Optional μ¬μ©νμ¬ ννκ°λ₯
κ²°κ³Ό μμ
,λΉκ²°κ³Ό
λ₯Ό λͺ νν νννλ μ©λ
(μ΄μ μ null μ μ¬μ©νλλ° null μ μ¬μ©νλ©΄ NPE κ° λ°μνλ©΄μ νλ‘κ·Έλ¨μ΄ μ£½μ΄λ²λ¦Ό)- JPA μμ μ£Όλ‘ μ¬μ©λλ€
Optional μ£Όμμ¬ν
- Optional λ³μμλ null ν λΉ νμ§ μκΈ°
- Optional μ ν΄λμ€ νλ νμ μΌλ‘ μ¬μ© νμ§ μκΈ° -> κ°μ²΄ κ·Έλλ‘ μ¬μ© μ΄ μ³μ
- λ©μλ μΈμλ‘ Optional μ¬μ© νμ§ μκΈ° -> κ°μ²΄ κ·Έλλ‘ μ¬μ©μ΄ μ³μ
- λΉ μ»¬λ μ , λ°°μ΄μ OPtional μ¬μ©νμ§ μκΈ° -> λΉ μ»¬λ μ μ 리ν΄νλκ² μ³μ
- μμνμ κ°μ Optional ν΄λμ€κ° μλ OptionalInt , OptionalLong ... ν΄λμ€ μ¬μ©νλκ² μ±λ₯λͺ μμ μ’λ€.->λ°μ± μΈλ°©μμ΄ μΌμ΄λλ©΄μ μ±λ₯ μ ν
Optional μ¬μ©
Optional<String> optional = Optional.empty(); Optional<String> opt = Optional.of("hello"); String temp = null; Optional<String> opt = Optional.ofNullable(temp);
Optional κ°μ²΄κ° μ 곡ν΄μ£Όλ λ©μλ
- empty ()
public static <T> Optional<T> empty()
Optional<String> emptyOptional = Optional.empty();
λΉ Optional
κ°μ²΄ λͺ
μμ μμ±
- of ()
public static <T> Optional<T> of (T value)
Optional <String> optionalValue = Optional.of("hello");
null κ°μ΄ μλλΌκ³ νμ ν λ μ¬μ©νλ€.
null μ λ°μΌλ©΄ NPE λ°μ
- ofNullable ()
Optional<String> optionalValue = Optional.ofNullable(null); Optional<String> optionalValue2 = Optional.ofNullable("World");
κ°μ΄ null μΌ μλ μμ λ μ¬μ©
κ°μ΄ null μ΄λ©΄ λΉ Optional κ°μ²΄
λ₯Ό λ°ννλ€.
- get ()
public T get()
Optional<String> optional = Optional.of("Hello"); System.out.println(optional.get()); // "Hello" // Optional<String> emptyOptional = Optional.empty(); // System.out.println(emptyOptional.get()); // μμΈ λ°μ
κ°μ΄ μ‘΄μ¬νλ©΄ κ°μ λ°ν
μ‘΄μ¬νμ§ μμΌλ©΄ NoSuchElementException
λ°μ
!! κ°μ΄ νμ μ‘΄μ¬νλ€κ³ νμ€ν λλ§ μ¬μ©νλ€. !!
- isPresent ()
public boolean isPresent()
Optional<String> optional = Optional.of("Test"); System.out.println(optional.isPresent()); // true Optional<String> emptyOptional = Optional.empty(); System.out.println(emptyOptional.isPresent()); // false
κ°μ΄ μ‘΄μ¬νλ©΄ true , κ·Έλ μ§ μμΌλ©΄ false
- ifPresent ()
public void ifPresent(Consumer<? super T> consumer
Optional<String> optional = Optional.of("Hello"); optional.ifPresent(value -> System.out.println("Value: " + value)); // "Value: Hello"
κ°μ΄ μ‘΄μ¬νλ κ²½μ° μ 곡λ Consumer μ€ν
- filter()
`public Optional<T> filter(Predicate<? super T> predicate)
κ°μ΄ μ‘΄μ¬νκ³ μ‘°κ±΄μ λ§μ‘±νλ©΄ Optional λ°ν
μλλΌλ©΄ λΉ Optonal λ°ν
- map()
public <U> Optional<U> map(Function<? super T,? extends U> mapper)
κ°μ΄ μ‘΄μ¬νλ©΄ λ§€νν¨μ (Function) μ μ© κ²°κ³Ό μΌλ° κ° or κ°μ²΄
λ₯Ό λ°ννκ³
μ΅μ’ μ μΌλ‘λ Optional λ‘ κ°μΈμ Έμ λ°ν
- flatMap
λ§€νν¨μκ° Optional μ λ°νν λ μ¬μ© (λ§€νν¨μ κ²°κ³ΌλΆν° Optional μ)
Optional<<>> μ μ€μ²©λμ§ μκ³ Optional<R> λ‘ λ§λ€μ΄μ§
- orElse()
public T orElse(T other)
κ°μ΄ μ‘΄μ¬νλ©΄ κ°μ λ°ν , μλλ©΄ κΈ°λ³Έκ° λ°ν
- orElseGet()
public T orElseGet(Supplier<? extends T> other)
κ°μ΄ μ‘΄μ¬νλ©΄ κ°μ λ°ν , μλλ©΄ Supplier
μ¬μ©ν΄ λμ κ° μμ±
- orElseThrow()
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
κ°μ΄ μ‘΄μ¬νμ§μμΌλ©΄ μ¬μ©μμ μ μμΈ λ°μ
- equals()
public boolean equals(Object obj)
- hashCode()
public int hashCode()
- toString()
public String toString()