Skip to content

Latest commit

Β 

History

History
82 lines (54 loc) Β· 2.3 KB

Item_44._default_functional_interface.md

File metadata and controls

82 lines (54 loc) Β· 2.3 KB

Item 44. ν‘œμ€€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λΌ

ν…œν”Œλ¦Ώ λ©”μ„œλ“œλ₯Ό λžŒλ‹€λ‘œ λŒ€μ²΄

  • ν•˜μœ„ ν΄λž˜μŠ€κ°€ λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•΄ 각자의 행동을 κ΅¬ν˜„ν•˜λ„λ‘ ν•˜λŠ” ν…œν”Œλ¦Ώ λ©”μ„œλ“œλŠ” Java 8 μ΄ν›„λ‘œ λ©”μ„œλ“œμ˜ 인자둜 ν•¨μˆ˜ 객체λ₯Ό λ„˜κΈ°λŠ” κ²ƒμœΌλ‘œ λŒ€μ²΄κ°€ κ°€λŠ₯해짐
  • java.util.function νŒ¨ν‚€μ§€ λ‚΄μ—λŠ” 이미 μš°λ¦¬κ°€ ν•„μš”λ‘œ ν•˜λŠ”(μœ„μ™€ 같이 κΈ°μ‘΄ λ™μž‘μ„ λŒ€μ²΄ν•˜λŠ”) λ‹€μ–‘ν•œ ν‘œμ€€ν˜• ν•¨μˆ˜ μΈν„°νŽ˜μ΄μŠ€λ“€μ΄ 쑴재
    • 이λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ν•΄λ‹Ή APIκ°€ λ‹€λ£¨λŠ” κ°œλ…μ˜ 수λ₯Ό 쀄일 수 μžˆμ–΄ 더 읽기 μ‰¬μš΄ μ½”λ“œλ₯Ό λ§Œλ“¦

ν‘œμ€€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€

UnaryOperator

T apply(T t)
  • 단일 인자λ₯Ό λ°›μ•„ 같은 νƒ€μž…μ˜ 값을 λ°˜ν™˜
  • 예: String::toLowerCase

BinaryOperator

T apply(T t1, T t2)
  • 같은 νƒ€μž…μ˜ 두 인자λ₯Ό λ°›μ•„ 같은 νƒ€μž…μ˜ 값을 λ°˜ν™˜
  • Integer::sum

Predicate

boolean test(T t)
  • 단일 인자λ₯Ό λ°›μ•„ μ°Έ/거짓을 νŒλ³„ν•΄ λ°˜ν™˜
  • Collection::isEmpty

Function<T,R>

R apply(T t)
  • 단일 인자λ₯Ό λ°›μ•„ μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…μ˜ 값을 λ°˜ν™˜
  • Arrays::asList

Supplier

T get()
  • κ³΅κΈ‰μž, λ°›λŠ” 것 없이 제곡만 함을 의미

Consumer

void accept(T t)
  • μ†ŒλΉ„μž, μ£ΌλŠ” 것 없이 μ œκ³΅λ°›κΈ°λ§Œ 함을 의미

λ‚˜λ¨Έμ§€ ν‘œμ€€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€

  • 총 43κ°œκ°€ μ‘΄μž¬ν•¨
  • λ‚˜λ¨Έμ§€λŠ” λͺ¨λ‘ μœ„μ˜ 6κ°€μ§€μ˜ λ³€ν˜•

μ»€μŠ€ν…€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€

μ»€μŠ€ν…€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€μΈ Comparator

  • Comparator μΈν„°νŽ˜μ΄μŠ€λŠ” 사싀 ToIntBiFunction<T,U>λΌλŠ” ν‘œμ€€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ‘œ λŒ€μ²΄κ°€ κ°€λŠ₯ν•œλ°, κ°€λŠ₯함에도 μƒˆλ‘œ μ„ μ–Έν•œ μ΄μœ κ°€ 있음
    1. 이름이 μš©λ„λ₯Ό 잘 μ„€λͺ… (이름 μžμ²΄λ‘œλ„ μš©λ„λ₯Ό 잘 μ„€λͺ…ν•΄μ•Ό 함)
    2. λ°˜λ“œμ‹œ μ§€μΌœμ•Ό ν•  κ·œμ•½μ΄ 쑴재
      • λ°˜ν™˜κ°’μ΄ 음수/0/μ–‘μˆ˜λ₯Ό μ–΄λ–¨ λ•Œ λ°˜ν™˜ν•΄μ•Ό ν•˜λŠ”κ°€μ— λŒ€ν•œ κ·œμ•½
    3. μ—¬λŸ¬ λ””ν΄νŠΈ λ©”μ„œλ“œλ₯Ό 제곡

μ»€μŠ€ν…€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„ μ–Έν•΄μ•Ό ν•  λ•Œ

  1. μ—¬λŸ¬ κ³³μ—μ„œ 자주 μ‚¬μš©λ˜λ©°, 이름 자체둜 κ·Έ μš©λ„λ₯Ό μ„€λͺ…ν•΄μ•Ό ν•  λ•Œ
  2. λ°˜λ“œμ‹œ 따라야 ν•˜λŠ” κ·œμ•½μ΄ μ‘΄μž¬ν•  λ•Œ
  3. μœ μš©ν•œ λ””ν΄νŠΈ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•΄μ•Ό ν•  λ•Œ