λΉ λ₯Έ μμ½
μ΄ νμλ κ³ κΈ Java νλ‘κ·Έλλ° κ°λ
, νΉν μ λ€λ¦μ€, μμΌλμΉ΄λ λ° ν¨μν νλ‘κ·Έλλ°μ μ΄μ μ λ§μΆμμ΅λλ€. ν λ‘ μ λλ€ ννμ, λ©μλ μ°Έμ‘° λ° ν¨μν μΈν°νμ΄μ€λ₯Ό λ€λ£¨μμΌλ©° Javaμμ ꡬ문, μ¬μ© λ° μ€μ μμ© νλ‘κ·Έλ¨μ μ€λͺ
νμ΅λλ€. λ°νμλ€μ λν μ΅λͺ
ν¨μλ₯Ό νμνμ¬ λ©μλλ₯Ό 맀κ°λ³μλ‘ μ λ¬νκ³ λ©μλμμ ν¨μλ₯Ό λ°ννλ λ°©λ²μ 보μ¬μ£ΌμμΌλ©°, ꡬν μ€ λ°μν λ¬Έμ μ μ€λ₯λ ν΄κ²°νμ΅λλ€.
λ€μ λ¨κ³
μ€μλμ λ°λΌ μμλ₯Ό 맀κΉλλ€.
μ§μ λ μ¬λκ³Ό ν¨κ» λ²νΈκ° λ§€κ²¨μ§ μμ
νλͺ©μΌλ‘ ν¬λ§·ν©λλ€.
μμ²ν μ νν νμμΌλ‘ μ μνμμμ€.
μΌλ¨ μ½ν
μΈ λ₯Ό μ 곡νμλ©΄, μ¬μμ λ°λΌ μ²λ¦¬νκ² μ΅λλ€.
μμ½
Java Generics λ° Wildcardsμ λν΄ μ€λͺ
ν©λλ€.
μ΄ ν λ‘ μ Java μ λ€λ¦κ³Ό μμΌλμΉ΄λμ μ€μ μ λ‘λλ€. κ°μ¬λ μ§λ¬Έν κΈ°νΈλ‘ ννλλ μ λ€λ¦ μμΌλμΉ΄λκ° μ΄λ»κ² νμ μ¬μ©μ λ λ§μ μ μ°μ±μ νμ©νλμ§ μ€λͺ
ν©λλ€. μμΌλμΉ΄λλ₯Ό μ¬μ©νμ¬ μ¬λ¬ μ νμ μμ©νλ λ©μλμ ν΄λμ€λ₯Ό λ§λ€ μ μλ λ°©λ²κ³Ό 'extends' λ° 'super' ν€μλλ₯Ό μ¬μ©νμ¬ μ΄λ¬ν μ νμ μνμ κ³Ό ννμ μ μ€μ νλ λ°©λ²μ 보μ¬μ€λλ€. κ°μ¬λ λν μμΌλμΉ΄λλ₯Ό Collection Frameworkμ μ¬μ©μ μ μ ν΄λμ€μμ μ¬μ©νλ κ²μ ν¬ν¨νμ¬ μ€μ μ μ μ©νλ λ°©λ²μ λν μμ λ₯Ό μ 곡ν©λλ€.
νλ‘κ·Έλλ° κ°λ μ λν λΆμΌμΉλ ν λ‘
μ΄ ν λ‘ μ λͺ
νν μ΄μ μμ΄ λ€μν μ£Όμ λ₯Ό λ€λ£Ήλλ€. μμΌλμΉ΄λμ ν¨μμ κ°μ νλ‘κ·Έλλ° κ°λ
μ λ€λ£¨λ©°, BoxWildCardμ λν΄ μΈκΈνκ³ μΈνΈ κ° μμλ₯Ό λΉκ΅ν©λλ€. SM μν°ν
μΈλ¨ΌνΈμ FXλΌλ κ±Έκ·Έλ£Ήμ λν κ°λ΅ν μΈκΈλ μμ΅λλ€. λνλ λΆλ¦¬λμ΄ μμΌλ©° μΌκ΄λ μμ¬ κ²°μ μ΄λ νλ νλͺ©μ΄ λΆμ‘±ν©λλ€.
Javaμ κΈ°λ₯ νλ‘κ·Έλλ° κ°μ
νμμμ Alohaλ ν¨μν νλ‘κ·Έλλ°μ κ°λ
κ³Ό Javaμμμ μμ©μ λν΄ λ
Όμνμ΅λλ€. κ·Έλ ν¨μν νλ‘κ·Έλλ°μ΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό λ¬λ¦¬ ν¨μλ₯Ό μ€μ¬μΌλ‘ μ΄λ£¨μ΄μ§λ€κ³ μ€λͺ
νμ΅λλ€. κ·Έλ μ΅λͺ
ν¨μλ₯Ό λ κ°κ²°νκ² μ μνλ κΈ°μ μΈ lambda ν¨μμ κ°λ
μ μκ°νμ΅λλ€. Alohaλ λν "Function" ν¨ν€μ§μ "Functional Interface" ν΄λμ€λ₯Ό μ¬μ©νμ¬ Javaμμ ν¨μ νλ‘κ·Έλλ°μ μ§μνλ λ°©λ²μ λν΄ μ€λͺ
νμ΅λλ€. κ·Έλ ν¨μ νλ‘κ·Έλλ°μ΄ κ°μ²΄λ λ©μλκ° μλλΌ, ν¨μλ₯Ό μ μνκ³ λ°μ΄ν°μ μ μ©νμ¬ μνλ κ²°κ³Όλ₯Ό μ»λ κ²μ΄λΌκ³ κ°μ‘°νμ΅λλ€.
Java Lambda ννμ λ° λ©μλ μ°Έμ‘°
λ°νμλ Javaμμ λλ€ ννμκ³Ό λ©μλ μ°Έμ‘°μ ꡬ문과 μ¬μ©λ²μ μ€λͺ
ν©λλ€. λ¨μΌ λ° λ€μ€ λ§€κ° λ³μλ‘ λλ€ ννμμ μμ±νλ λ°©λ², νΉμ κ²½μ° κ΄νΈλ₯Ό μλ΅νκ³ λ°ν λ¬Έμ₯μ μ¬μ©νλ λ°©λ², κ·Έλ¦¬κ³ μμ±μμ κΈ°μ‘΄ λ©μλμ λν λ©μλ μ°Έμ‘°λ₯Ό μ¬μ©νλ λ°©λ²μ λ€λ£Ήλλ€. λ°νμλ λν Supplier λ° Functionκ³Ό κ°μ κΈ°λ₯ μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ λ°©λ²μ 보μ¬μ£Όκ³ μμ±μ μ°Έμ‘°λ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό λ§λλ μμ λ₯Ό μ 곡ν©λλ€.
Java ν¨μ μΈν°νμ΄μ€μ Lambda
μ΄ νΈλμ€ν¬λ¦½νΈλ Javaμ ν¨μ μΈν°νμ΄μ€μ λλ€ ννμμ λν΄ μ€λͺ
ν©λλ€. ν¨μ μΈν°νμ΄μ€λ @FunctionalInterfaceλ‘ μ£Όμν μ μλ λ¨μΌ μΆμ λ©μλλ₯Ό κ°μ§ μΈν°νμ΄μ€μμ μ€λͺ
ν©λλ€. λ°νμλ λλ€ ννμμ λ§λ€κ³ μ¬μ©νλ λ°©λ²μ λ³΄μ¬ μ£Όλ©° λ©μλ μ°Έμ‘°λ₯Ό ν¬ν¨νμ¬ μ΄λ₯Ό λ¨μννλ λ€μν λ°©λ²μ 보μ¬μ€λλ€. λν μμ±μ μ°Έμ‘°μ Java Stream APIμ κΈ°λ³Έ μ¬νμ λ€λ£Ήλλ€. ν λ‘ μλ java.util.function ν¨ν€μ§μμ μ 곡νλ κΈ°λ₯ μΈν°νμ΄μ€, μλ₯Ό λ€μ΄ Supplierλ₯Ό μ¬μ©νλ λ°©λ²μ λν μμκ° ν¬ν¨λ©λλ€. μ°μ¬λ λλ€ ννμ ꡬ문μ μ΄ν΄νκ³ Java νλ‘κ·Έλλ°μμ ν¨μ μΈν°νμ΄μ€λ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νλ λ°©λ²μ κ°μ‘°ν©λλ€.
λ©μλ λ° μΈν°νμ΄μ€ ꡬνμ νμν©λλ€.
Explore methods and interfaces implementation
νμμμ ALOHAλ λ€μν λ©μλμ μΈν°νμ΄μ€μ κ΅¬μ± λ° κ΅¬νμ λν΄ λ
Όμνμ΅λλ€. κ·Έλ€μ μ λ€λ¦ μ¬μ©κ³Ό λ°ν μ ν μ²λ¦¬λ₯Ό ν¬ν¨νμ¬ μ΄λ¬ν λ©μλλ₯Ό μ μνκ³ μ¬μ©νλ λ€μν μ κ·Ό λ°©μμ νꡬνμ΅λλ€. ALOHAλ λν 맀κ°λ³μλ λ°ν μ νμ΄ μλ λ©μλμ κ°μ λ€μν μλ리μ€λ₯Ό μ²λ¦¬νλ λ°©λ²μ 보μ¬μ£Όμμ΅λλ€. κ·Έλ€μ μ΄λ¬ν λ©μλμ μΈν°νμ΄μ€μ μ€μ μ μ©μ λν΄ λ
Όμνλ©° κ²°λ‘ μ λ΄λ Έμ΅λλ€.
κ°μ ν© κ³μ° ν¨μ
νμμμ ALOHAλ xλΆν° yκΉμ§μ κ°λ€μ ν©μ κ³μ°νλ ν¨μ ꡬνμ λν΄ λ
Όμνμ΅λλ€. λν λ©μλλ₯Ό λ€λ₯Έ λ©μλλ‘ μ λ¬νκ³ μ΅λͺ
ν¨μλ₯Ό μ¬μ©νλ κ°λ
λ νꡬνμ΅λλ€. ALOHAλ λ μ«μμ λ ν° κ°μ μ°Ύλ ν¨μλ₯Ό λ§λλ λ°©λ²κ³Ό μ΄ ν¨μλ₯Ό λ€λ₯Έ λ©μλλ‘ μ λ¬νλ λ°©λ²μ 보μ¬μ£Όμμ΅λλ€. λν μΈν°νμ΄μ€ μ¬μ©κ³Ό ν¨μ μ λ¬μ λν΄ λ
Όμνμ΅λλ€. λνλ ALOHAκ° μ½λ ꡬ쑰μ νΈμΆ μ ν¨μ μ€ν λ°©μμ μ€λͺ
νλ©΄μ λλ¬μ΅λλ€.
Java νλ‘κ·Έλλ°μ μ΅λͺ ν¨μ
νμμμ ALOHAλ Java νλ‘κ·Έλλ°μμ μ΅λͺ
ν¨μλ₯Ό μ¬μ©νλ λ°©λ²μ λν΄ λ
Όμνμ΅λλ€. λ©μλλ₯Ό 맀κ°λ³μλ‘ μ λ¬νκ³ λ©μλλ‘λΆν° ν¨μλ₯Ό λ°ννλ λ°©λ²μ μ΄ν΄λ³΄μμ΅λλ€. ALOHAλ λν κ°κ²°ν μ½λλ₯Ό μμ±νλ λ° κΈ°λ₯ μΈν°νμ΄μ€μ μ λ€λ¦μ μ¬μ©νλ λ°©λ²μ μμ°νμ΅λλ€. νμ λͺ κ°μ§ μ€λ₯μ μ΄λ €μμ μ§λ©΄νμ§λ§, ν΄κ²°νμ¬ μ΅λͺ
ν¨μμ λν μ΄ν΄λ₯Ό λμΌ μ μμμ΅λλ€. λνλ Java νλ‘κ·Έλλ°μμ μ΅λͺ
ν¨μλ₯Ό μ¬μ©νλ μ΄μ μ λν ν λ‘ μΌλ‘ λλ¬μ΅λλ€.