Lambda
μλ°λ κ°μ²΄μ§ν₯μΈμ΄μ΄μ§λ§, μλ° 8μ λμ λ λλ€μμ ν΅ν΄ ν¨μν μΈμ΄μ νΉμ§μ μ¬μ©ν μ μλ€. λλ€μμ μ¬μ©νλ©΄ λ©μλλ₯Ό νλμ μμΌλ‘ ννν μ μμΌλ©°, μ½λμ μμ μ€μ΄λ©΄μ κ°λ μ±μ λμΌ μ μλ€. λν λλ€μμ λ©μλμ 맀κ°λ³μλ‘ μ λ¬ν μ μμΌλ©°, λ©μλμ κ²°κ³Όλ‘ λ°νν μλ μλ€.
ν¨μν μΈν°νμ΄μ€(Functional Interface)
ν¨μν μΈν°νμ΄μ€λ λ¨ νλμ μΆμ λ©μλλ₯Ό κ°μ§λ μΈν°νμ΄μ€λ₯Ό λ§νλ©°, ν΄λΉ λ©μλλ₯Ό ν¨μλΌκ³ λΆλ₯Έλ€. μΌλ°μ μΌλ‘ μΈν°νμ΄μ€λ₯Ό ꡬνν μ΅λͺ ν΄λμ€μ κ°μ²΄λ λ€μκ³Ό κ°μ΄ μμ±ν μ μλ€.
μ μ½λμ λ©μλ max()
λ©μλλ₯Ό λλ€μμΌλ‘ μλμ κ°μ΄ ννν μ μλ€.
μ΄μ²λΌ MyFunction
μΈν°νμ΄μ€λ₯Ό ꡬνν μ΅λͺ
ν΄λμ€μ κ°μ²΄λ₯Ό λλ€μμΌλ‘ λ체ν μ μλ μ΄μ λ ꡬνν μΈν°νμ΄μ€κ° ν¨μν μΈν°νμ΄μ€μ΄κΈ° λλ¬Έμ΄λ€.
ν¨μν μΈν°νμ΄μ€κ° λκΈ° μν 쑰건μ default λ©μλλ static λ©μλλ₯Ό κ°μ§ μ μμ§λ§, ꡬνν΄μΌ ν μΆμ λ©μλλ νλλ§ μ‘΄μ¬ν΄μΌ νλ€.
κ²°κ΅ κ΅¬νν΄μΌ ν μΆμ λ©μλκ° νλμ΄κΈ° λλ¬Έμ λλ€μμ ν΅ν΄ μ΅λͺ
ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν μ μλ κ²μ΄λ€.
@FunctionalInterface
@FunctionalInterface
μ΄λ
Έν
μ΄μ
μ μΆμ λ©μλκ° νλλ§ μ‘΄μ¬νλμ§ μ»΄νμΌλ¬κ° 체ν¬νλλ‘ νμ¬ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬λ°λ₯΄κ² μ μνλμ§ νμΈν μ μλ€.
μλλ μ€μ Comparator μΈν°νμ΄μ€μ μ μμ΄λ€.
λ°νκ³Ό 맀κ°λ³μ
λ©μλμ 맀κ°λ³μκ° ν¨μν μΈν°νμ΄μ€μΈ κ²½μ° λλ€μμ 맀κ°λ³μλ‘ μ λ¬ν μ μλ€.
κ·Έλ¦¬κ³ λ°ννμ μ΄ ν¨μν μΈν°νμ΄μ€μΈ κ²½μ° λλ€μμΌλ‘ λ°νν μ μλ€.
java.util.function ν¨ν€μ§
μΌλ°μ μΌλ‘ μμ£Ό μ°μ΄λ νμμ λ©μλλ₯Ό ν¨μν μΈν°νμ΄μ€λ€μ 미리 μ μν΄λμ ν¨ν€μ§λ‘ μμ£Ό μ°μ΄λ ν¨μν μΈν°νμ΄μ€λ μλμ κ°λ€.
java.lang.Runnable
void run()
μμ
μμ
Supplier
T get()
μμ
T
Consumer
void accept(T t)
T
μμ
Function<T, R>
R apply(T t)
T
R
Predicate
boolean test(T t)
T
boolean
μ μΈν°νμ΄μ€ μ€ Function<T, R>
κ³Ό Predicate<T>
λ₯Ό νμ©ν μμλ μλμ κ°λ€.
κ·Έ μΈμλ BiFunction<T, U, R>
κ³Ό BiPredicate<T, U>
λ±κ³Ό κ°μ λ κ° μ΄μμ 맀κ°λ³μλ₯Ό κ°μ§λ ν¨μν μΈν°νμ΄μ€λ μμΌλ©°,
UnaryOperator<T>
μ BinaryOperator<T>
λ 맀κ°λ³μμ λ°νκ°μ νμ
μ΄ κ°λ ν¨μν μΈν°νμ΄μ€λ μ‘΄μ¬νλ€.
λ©μλ μ°Έμ‘°(Method Reference)
λ©μλ μ°Έμ‘°λ λλ€μμΌλ‘ ννν μ μλ μ΅λͺ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νλ μ½λλ₯Ό λ κ°κ²°νκ² ννν μ μλ λ°©λ²μ΄λ€. μ λ¬ λ°μ μΈμλ₯Ό κ·Έλλ‘ λ€λ₯Έ λ©μλλ‘ μ λ¬νλ κ²½μ°μ μ¬μ©ν μ μλ€.
μ°Έκ³ μλ£
Last updated
Was this helpful?