Lambda
ν¨μν νλ‘κ·Έλλ°μ λ³λ ¬μ²λ¦¬μ μ΄λ²€νΈ μ§ν₯ νλ‘κ·Έλλ°μ μ ν©νκΈ° λλ¬Έμ λΆκ°λκ³ μλ€. μλ°λ ν¨μμ νλ‘κ·Έλλ°μ μν΄ λλ€μμ λμ νλ€.
λλ€μμ μ΅λͺ ν¨μλ₯Ό μμ±νκΈ° μν μμΌλ‘ κ°μ²΄ μ§ν₯ μΈμ΄λ³΄λ€λ ν¨μ μ§ν₯ μΈμ΄μ κ°κΉλ€.
μλ° μ½λκ° λ§€μ° κ°κ²° ν΄μ§
컬λ μ μ μμλ₯Ό νν°λ§νκ±°λ 맀νν΄ μνλ κ²°κ³Όλ₯Ό μ½κ² μ§κ³ν μ μμ
λλ€λ?
Lambdaλ λ©μλλ₯Ό νλμ μμΌλ‘ ννν κ²μΌλ‘, μ΅λͺ λ©μλ μμ± λ¬Έλ²μ΄λΌ λ³Ό μ μλ€. μ¦, λ©μλλͺ μμ΄ κ΅¬νλΆλ§μΌλ‘ μ μΈν κ²μ΄λ€. νμ§λ§ Javaμ λ©μλλ λ©μλ μμ²΄λ‘ νΌμ μ μΈνμ¬ μ°μΌ μ μμΌλ©°, 무쑰건 Class ꡬμ±λ©€λ²λ‘ μ μΈλμ΄μΌνλ€. Lambdaλ₯Ό ν΅ν΄μ μμ±λλ κ²μ λ©μλ μμ²΄κ° μλ μ€νλ¬Έ(λ©μλ)λ₯Ό κ°μ§ κ°μ²΄μ΄λ€. λλ€μμ μΌλ°μ μΈ κ°μ²΄κ° μλ μΈν°νμ΄μ€λ₯Ό ꡬνν μ΅λͺ ꡬνκ°μ²΄λ₯Ό μμ±νλ€.
λλ€μμ ννλ λ§€κ° λ³μλ₯Ό κ°μ§ μ½λ λΈλ‘μ΄μ§λ§, λ°νμ μμ μ΅λͺ ꡬν κ°μ²΄λ₯Ό μμ±
λλ€μμ (맀κ°λ³μ)->{μ€νμ½λ}
μ ννλ‘ μμ±λλ€.
λλ€μ κΈ°λ³Έ λ¬Έλ²
(νμ 맀κ°λ³μ, ...)
: μ€λ₯Έμͺ½ μ€κ΄νΈ {}λ₯Ό μ€ννκΈ° μν΄ νμν κ°μ μ 곡νλ μν , 맀κ°λ³μ μ΄λ¦μ κ°λ°μκ° μμ λ‘κ² μ€ μ μλ€.->
: λ§€κ° λ³μλ₯Ό μ΄μ©ν΄μ μ€κ΄νΈ{}
λ₯Ό μ€ν
λ§€κ° λ³μ νμ μ λ°νμμμ λμ λλ κ°μ λ°λΌ μλμΌλ‘ μΈμλ μ μκΈ° λλ¬Έμ λλ€μμμλ λ§€κ° λ³μμ νμ μ μΌλ°μ μΌλ‘ μΈκΈνμ§ μλλ€.
νλμ 맀κ°λ³μλ§ μλ€λ©΄ ()
λ₯Ό μλ΅ν μ μκ³ , νλμ μ€νλ¬Έλ§ μλ€λ©΄ {}
λ μλ΅ν μ μλ€.
λ§μ½ 맀κ°λ³μκ° μλ€λ©΄ λΉκ΄νΈ()
λ₯Ό λ°λμ μ¬μ©ν΄μΌνλ€.
μ€νλ¬Έμ μ€ννκ³ κ²°κ³Όκ°μ 리ν΄ν΄μΌνλ€λ©΄ μμ κ°μ΄ returnλ¬ΈμΌλ‘ κ²°κ³Όκ°μ μ§μ ν μ μλ€.
λ§μ½ {}
μ returnλ¬Έλ§ μλ κ²½μ°μλ μμ κ°μ΄ returnλ¬Έμ μ¬μ©νμ§ μκ³ μμ±ν μ μλ€.
νκ² νμ
κ³Ό ν¨μμ μΈν°νμ΄μ€
λλ€μμ μΈν°νμ΄μ€ λ³μμ λμ λλ€. μ¦, λλ€μμ μΈν°νμ΄μ€μ μ΅λͺ ꡬν κ°μ²΄λ₯Ό μμ±νλ€λ λ»μ΄λ€. μΈν°νμ΄μ€λ μ§μ κ°μ²΄νν μ μκΈ° λλ¬Έμ μ΅λͺ ꡬν ν΄λμ€λ₯Ό μμ±νκ³ κ°μ²΄ννλ€. λλ€μμ λμ λ μΈν°νμ΄μ€μ μ’ λ₯μ λ°λΌ μμ±λ²μ΄ λ¬λΌμ§κΈ° λλ¬Έμ λλ€μμ΄ λμ λ μΈν°νμ΄μ€λ₯Ό λλ€μμ νκ²νμ (target type)μ΄λΌ νλ€.
@FunctionallInterface ν¨μμ μΈν°νμ΄μ€
λλ€μμ΄ νλμ λ©μλλ₯Ό μ μνκΈ° λλ¬Έμ λ κ° μ΄μμ μΆμ λ©μλκ° μ μΈλ μΈν°νμ΄μ€λ λλ€μμ μ΄μ©ν΄μ ꡬνκ°μ²΄λ₯Ό μμ±ν μ μλ€. μ¦, νλμ μΆμ λ©μλκ° μ μΈλ μΈν°νμ΄μ€λ§μ΄ λλ€μμ νκ² νμ
μ΄ λ μ μμΌλ©°, μ΄λ₯Ό ν¨μμ μΈν°νμ΄μ€λΌ νλ€. μΈν°νμ΄μ€ μ μΈμ @FunctionallInterface
μ΄λ
Έν
μ΄μ
μ λΆμ΄λ©΄ μ»΄νμΌλ¬κ° λ κ° μ΄μμ μΆμ λ©μλκ° μ μΈλμ§ μλλ‘ μ²΄νΉν΄μ€λ€.
λ§€κ° λ³μμ 리ν΄κ°μ΄ μλ λλ€μ
method()κ° λ§€κ°λ³μ κ°μ κ°μ§μ§ μκΈ° λλ¬Έμ λλ€μμμ 맀κ°λ³μκ° μλ€.
λλ€μμ΄ λμ
λ μΈν°νμ΄μ€μ μ°Έμ‘° λ³μλ μμ κ°μ΄ method()λ₯Ό νΈμΆν μ μμΌλ©°, νΈμΆμ λλ€μμ {...}
λ₯Ό μ€νμν¨λ€.
λ§€κ° λ³μκ° μλ λλ€μ
리ν΄κ°μ΄ μλ λλ€μ
ν΄λμ€ λ©€λ²μ λ‘컬 λ³μ μ¬μ©
λλ€μμ μ€ν λΈλ‘μλ ν΄λμ€μ λ©€λ²(νλ, λ©μλ) λ° λ‘컬 λ³μλ₯Ό μ¬μ©ν μ μλ€.
ν΄λμ€ λ©€λ² μ¬μ©
ν΄λμ€μ λ©€λ²μΈ νλμ λ©μλλ μ μ½μμ΄ μ¬μ©ν μ μλ€. νμ§λ§ this ν€μλλ₯Ό μ¬μ©ν λλ μ£Όμκ° νμνλ€.
μΌλ°μ μΌλ‘ μ΅λͺ κ°μ²΄ λ΄λΆμμ thisλ μ΅λͺ κ°μ²΄μ μ°Έμ‘°μ΄μ§λ§, λλ€μμμ thisλ λ΄λΆμ μΌλ‘ μμ±λλ λλ€μμ μ€νν κ°μ²΄μ μ°Έμ‘°μ΄λ€.
λ‘컬 λ³μ μ¬μ©
λλ€μμ λ©μλ λ΄λΆμμ μ£Όλ‘ μμ±λλ―λ‘ λ‘컬 μ΅λͺ ꡬν κ°μ²΄λ₯Ό μμ±μν¨λ€κ³ λ΄μΌνλ€. λλ€μμμ λ°κΉ₯ ν΄λμ€μ νλλ λ©μλλ μ ν μμ΄ μ¬μ©ν μ μμΌλ, λ©μλμ 맀κ°λ³μ λλ λ‘컬 λ³μλ₯Ό μ¬μ©νλ©΄ μ΄ λ λ³μλ final νΉμ±μ κ°μ ΈμΌνλ€.
[09. μ€μ²© ν΄λμ€μ μ€μ²© μΈν°νμ΄μ€ - μ΅λͺ κ°μ²΄μ λ‘컬 λ³μ μ¬μ© λ₯Ό μ°Έμ‘°]
λ§€κ° λ³μ λλ λ‘컬 λ³μλ₯Ό λλ€μμμ μ½λ κ²μ νμ©λμ§λ§, λλ€μ λ΄λΆ λλ μΈλΆμμ λ³κ²½ν μ μλ€.
Last updated
Was this helpful?