[D+71] λλ€ Lamda
κ΅λΉμ§μ D+71
- λλ€ Lamda -
λλ€
• λλ€ κ΅¬ν λ¨κ³
1λ¨κ³ : μΌλ°μ μΈ μΈν°νμ΄μ€μ μ΄λ₯Ό ꡬνν ν΄λμ€
// μΌλ°μ μΈ μΈν°νμ΄μ€μ μ΄λ₯Ό ꡬνν ν΄λμ€
interface Printable
{
public void print(String s);
}
class Printer implements Printable
{
public void print(String s)
{
System.out.println(s);
}
}
public class StepLamda1 {
public static void main(String[] args)
{
Printable prn = new Printer();
prn.print("hello");
}
}
2λ¨κ³ : μ΅λͺ ν΄λμ€λ‘ ꡬνν ν΄λμ€
interface Printable2
{
public void print(String s);
}
public class StepLamda2 {
public static void main(String[] args)
{
// κΈ°μ‘΄ Printerν΄λμ€λ₯Ό λ‘컬-μ΄λ ν΄λμ€λ‘ λ°κΎΈκ³ μ΄λ₯Ό λ€μ μ΅λͺ
ν΄λμ€λ‘ λ°κΎΈμλ€.
Printable2 prn = new Printable2() {
public void print(String s)
{
System.out.println(s);
}};
prn.print("hello2");
}
}
3λ¨κ³ : λλ€λ‘ ꡬνν ν΄λμ€
interface Printable3
{
public void print(String s);
}
public class StepLamda3
{
public static void printHello(Printable3 prn)
{
prn.print("Hello");
}
public static void main(String[] args)
{
// μ΅λͺ
ν΄λμ€ μ½λ
// μ΅λͺ
ν΄λμ€λ₯Ό ꡬννλ μ μ λ 1. ν΄λμ€ 1κ°, 2. ν¨μν μΈν°νμ΄μ€
// -> κ° λμλ€λ건 ν¨μ 1κ°μ§λ¦¬ κ°μ²΄λΌλ μλ―Έμ΄λ€.
// νλΌλ―Έν° -> ꡬν
Printable3 prn = (s) -> { System.out.println(s); };
prn.print("hello3");
printHello(prn);
printHello((s) -> { System.out.println(s); });
}
}
μΆκ° : λ€μν λ°©λ²μΌλ‘ λλ€ κ΅¬ννκΈ°
interface Printable4
{
public void print(String s);
}
public class StepLamda4 {
public static void main(String[] args)
{
Printable4 prn = null;
prn = (String s) -> {System.out.println(s);}; // κ°μ₯ κΈ΄ νμ
μ λλ€μ
prn.print("Hello1");
prn = (String s) -> System.out.println(s); // μ€κ΄νΈλ₯Ό μλ΅ (νμ€μΈ κ²½μ°)
prn.print("Hello2");
prn = (s) -> {System.out.println(s);}; // νλΌλ―Έν°μ νμ
μ μλ΅ (λ§μ΄ μ¬μ©ν¨)
prn.print("Hello3");
prn = s -> {System.out.println(s);}; // νλΌλ―Έν°μ μκ΄νΈλ₯Ό μλ΅ (νλΌλ―Έν°κ° 1κ°μΈ κ²½μ°μλ§)
prn.print("Hello4");
}
}
• κΈ°μ‘΄ ν΄λμ€κ° λλ€κ° ꡬνλλ κ³Όμ
κΈ°μ‘΄μ μ΅λͺ ν΄λμ€κ° λλ€κ° λκΈ°κΉμ§μ κ³Όμ μ μΈμΈν μμ보λλ‘ νμ.
Printable prn = new Printable() {
public void print(String s)
{
System.out.println(s);
}};
λ³μ prnμ μ΄λ€ λ΄μ©μ΄ λ΄κ²¨μμ μ§λ λͺ°λΌλ μ΅μν prnμμλ Printableμ΄λΌλ μΈν°νμ΄μ€λ₯Ό ꡬνν κ°μ²΄κ° μ¨λ€λ κ±Έ μ°λ¦¬λ νμ μΆλ‘ μ ν΅ν΄ μμν μ μλ€.
κ·Έλ κΈ° λλ¬Έμ μ»΄νμΌλ¬ μ μ₯μμλ μ΅μν new Printable()μ΄λΌλ μ 보λ κ΅³μ΄ μλ €μ£Όμ§ μμλ μΆλ‘ μ΄ κ°λ₯νκΈ° λλ¬Έμ νμκ° μλ€.
Printable prn = {
public void print(String s)
{
System.out.println(s);
}};
new Printable()μ μ§μμ£Όκ³ λμ λ€μ νμΈνκ³ λλ©΄ ν΄λΉ μΈν°νμ΄μ€λ λ©μλκ° νλλ§ κ΅¬νλμ΄ μλ ν¨μν μΈν°νμ΄μ€λΌλ κ²μ μ μ μλ€.
κ·Έλ κΈ° λλ¬Έμ μ΄μ°¨νΌ ν΄λμ€μ ꡬνλ λ©μλλ νλμΌ κ²μ΄λ κ΅³μ΄ ν¨μ(λ©μλ) μ΄λ¦μ μ νμκ° μλ€κ³ μκ°ν΄ ν¨μλͺ μ μ§μλ²λ¦°λ€.
κ·Έλ¦¬κ³ λ§€κ°λ³μμμ μλ λ°μ΄ν°νμ λ μΈν°νμ΄μ€ μμ λ€ κ΅¬νλμ΄ μκΈ° λλ¬Έμ μ§μλ²λ¦°λ€.
Printable prn = {(s) { System.out.println(s); }};
μ¬μ€μ λ°κΉ₯μ κ°μΈμ£Όλ μ€κ΄νΈλ μλ―Έκ° μκΈ° λλ¬Έμ μ§μλ²λ¦¬κ³ λμ νμ΄νλ‘ ννν΄λ²λ¦°λ€.
Printable prn = (s) -> { System.out.println(s); };
μ΄λ κ² νμ¬ λλ€μμ΄ μμ±λμλ€.
λλ€λ μ»΄νμΌλ¬κ° μΈν°νμ΄μ€λ₯Ό λΆμν΄ νμ μΆλ‘ μ΄ κ°λ₯νκΈ° λλ¬Έμ λ΄μ©μ λμ΄λΌ μ μλ κ²μ΄λ€.
μ¦, μ»΄νμΌλ¬μ μ₯μμ λΆνμν μ 보λ₯Ό λμ΄λΈ κ²μ΄κΈ° λλ¬Έμ μ κ±°ν΄λ μ΄λ―Έ λ€ μΆλ‘ ν΄μ μ μ μλ€.