Item 44. Functional Interface
νμ€ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νλΌ
μλ°κ° λλ€λ₯Ό μ§μνκ² λλ©΄μ ν¨μ κ°μ²΄λ₯Ό λ°λ λ©μλλ μμ±μλ₯Ό μμ±ν μ μκ² λμλ€. ν¨μν μΈν°νμ΄μ€λ₯Ό μ§μ ꡬνν μλ μμ§λ§ μ΄λ―Έ μλ°λ νμ€ APIλ‘ java.util.function ν¨ν€μ§μ μλ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ κ²μ κΆμ₯νλ€.
java.util.function ν¨ν€μ§μ κΈ°λ³Έ μΈν°νμ΄μ€ 6κ°μ§
UnaryOperator
T apply(T t)
String::toLowerCase
μΈμ(1κ°)μ λ°νκ°μ νμ μ΄ κ°μ ν¨μ
BinaryOperator
T apply(T t1, T t2)
BigInteger::add
μΈμ(2κ°)μ λ°νκ°μ νμ μ΄ κ°μ ν¨μ
Predicate
boolean test(T t)
Collection::isEmpty
μΈμλ₯Ό λ°μ booleanμ λ°ννλ ν¨μ
Function<T, R>
R apply(T t)
Arrays::asList
μΈμμ λ°νκ°μ νμ μ΄ λ€λ₯Έ ν¨μ
Supplier
T get()
Instant::now
μΈμλ₯Ό λ°μ§ μκ³ κ°μ λ°ννλ ν¨μ
Consumer
void accept(T t)
System.out::println
μΈμλ₯Ό νλ λ°κ³ λ°νκ° μμ΄ μΈμλ₯Ό μλΉνλ ν¨μ
λͺ¨λ κΈ°λ³Έ μΈν°νμ΄μ€λ κΈ°λ³Έ νμ μΈ int, long, doubleμ κ°κ° λ°λ λ³ν μΈν°νμ΄μ€ 3κ°μ© μ 곡νκ² λκ³ , κ·Έ μΈμ λ€μν λ³ν μΈν°νμ΄μ€λ μ 곡νκ³ μλ€. (μ΄ 43κ°μ§λ§, κ·μΉμ±μ΄ λΆμ‘±νκΈ° λλ¬Έμ νμν λ μ°Ύμ μ¬μ©νλ κ²μ΄ μ’λ€.)
λ§μ μμ μΈν°νμ΄μ€λ₯Ό μ§μνκΈ° λλ¬Έμ λλΆλΆ μν©μμλ νμ€ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νκ³ , μλ κ²½μ°μλ§ μ§μ ꡬννλ κ²μ΄ μ’λ€.
νμ€ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ§ μλ κ²½μ°
μ΄λ―Έ λκ°μ μκ·Έλμ²λ₯Ό κ°λ μΈν°νμ΄μ€κ° μ‘΄μ¬νκ³ μμμλ λΆκ΅¬νκ³ , μ¬μ©νμ§ μκ³ λ³λμ μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄ μ¬μ©νλ κ²½μ°κ° μλ€.
κ·Έ μμλ Comparator<T>
μ ToIntBiFunction<T, U>
λ‘, λμ΄ κ΅¬μ‘°μ μΌλ‘ λμΌν μν μ νμ§λ§ Comparator
λ₯Ό λ
μμ μΈ μΈν°νμ΄μ€λ‘ μ¬μ©νλ κ²μ΄ μΌλ°μ μ΄λ€.
μμ£Ό μ°μ΄λ©΄μ, μ΄λ¦ μμ²΄κ° μ©λλ₯Ό λͺ ννκ² μ€λͺ ν΄μ€
ꡬννλ μͺ½μμ μ§μΌμΌ ν κ·μ½μ΄ λͺ ννκ² μ μλμ΄ μμ
λΉκ΅μλ€μ λ³ννκ³ μ‘°ν©ν μ μλ μ μ©ν λ©μλλ€μ μ 곡ν¨
λ§μ½ μμ λ΄μ© μ€ νλ μ΄μμ λ§μ‘±νλ€λ©΄ νμ€ ν¨μν μΈν°νμ΄μ€κ° μλ μ μ© ν¨μν μΈν°νμ΄μ€λ₯Ό ꡬννλ κ²λ μ’μ λ°©λ²μ΄ λ μ μλ€.(ꡬνν λ @FunctionalInterface
μ΄λ
Έν
μ΄μ
μ μ¬μ©νμ)
ν¨μν μΈν°νμ΄μ€ μ¬μ©μ μ£Όμμ
μλ‘ λ€λ₯Έ ν¨μν μΈν°νμ΄μ€λ₯Ό κ°μ μμΉμ μΈμλ‘ λ°κ² λλ λ©μλλ₯Ό λ€μ€ μ μν΄μλ μλλ€.
μ΄λ κ² λλ©΄ ν΄λΌμ΄μΈνΈμμ μ¬λ°λ₯Έ λ©μλ μ¬μ©μ νκΈ° μν΄ νλ³νμ ν΄μΌνκΈ° λλ¬Έμ, μ΄λ νΌνλ κ²μ΄ μ’λ€.
Last updated
Was this helpful?