MapleStory Finger Point

🟀 JAVA/🟀 JAVA κ°œλ…μ •λ¦¬

[JAVA 8+] Optional 객체

HYEJU01 2024. 12. 7. 12:13

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()