λͺ©μ°¨
μ°μ°¨λ μμ΄λλ° κ³΅λΆλ λμ΄ μκ³ μμ§ λͺ¨λ₯΄λκ² λ무 λ§λ€.

κ·Έλμ λ Έμ ν΄μ μ½λ©μ λͺ»νκΈ° μ κΉμ§λ κΎΈμ€ν λΆμ‘±ν λΆλΆμ 곡λΆν΄μ λ©κΏ μκ°μ΄λ€.
Java Lambda μ 리(java 1.8 μ΄μλΆν° κ°λ₯)
Javaμ Lambdaμ λν΄μ 곡λΆν λ€ μ΄λ₯Ό κΈ°λ‘ν΄ λ³΄κ² λ€.π
javaμ λλ€μμ μ΅λͺ κ°μ²΄λ₯Ό μμ±νκΈ° μν ννμμ(μμ λ₯Ό 보면μ μ΄ν΄νλκ² μμ λΉ λ₯΄λ€.)
λλ€ν¨μλ?π
λλ€ν¨μμ κ°λ μ λ무μν€λ₯Ό 보면 μλμ²λΌ λμμλ€.
λλ€μ, λλ λλ€ ν¨μλ νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©λλ κ°λ μΌλ‘ μ΅λͺ ν¨μ(ο§«εε½ζΈ, Anonymous functions)λ₯Ό μ§μΉνλ μ©μ΄μ΄λ€.
μ΅λͺ ν¨μλ λ§ κ·Έλλ‘ μ΄λ¦μ΄ μλ ν¨μμ΄λ€.
μ΅λͺ ν¨μλ€μ 곡ν΅μΌλ‘ μΌκΈκ°μ²΄(First Class citizen)λΌλ νΉμ§μ κ°μ§κ³ μλ€.
μ΄λ λ€λ₯Έ κ°μ²΄λ€μ μΌλ°μ μΌλ‘ μ μ© κ°λ₯ν μ°μ°μ λͺ¨λ μ§μνλ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ³ λ³΄ν΅ ν¨μμ μΈμλ‘ λκΈ°κΈ°, μμ νκΈ°, λ³μμ λμ νκΈ°μ κ°μ μ°μ°μ μ§μν λ μΌκΈ κ°μ²΄λΌκ³ νλ€κ³ μν€λ°±κ³Όμ λμμλ€.
ν¨μλ₯Ό λ§λ€μ§ μκ³ ν¨μμ²λΌ μ¬μ©νλ κ²(ν¨μλ₯Ό νλμ μμΌλ‘ νν)
λλ€μ μ₯λ¨μ π€
λλ€μ μ₯μ
1. μ½λμ κ°κ²°μ± : λλ€ μ¬μ© μ λΆ νμν λ°λ³΅λ¬Έμ μ€μ΄κ³ 볡μ‘ν μμ λ¨μνκ² νν κ°λ₯
2. μ§μ°μ°μ° μν : λλ€λ μ§μ°μ°μμ μν ν¨μΌλ‘μ¨ λΆνμν μ°μ° μ΅μν κ°λ₯
μ§μ°μ°μ°μ΄λ λ§ κ·Έλλ‘ λΆνμν μ°μ°μ νΌνλ €κ³ μ°μ°μ μ§μ°μν΄μ μλ―Ένλ€.
3. λ³λ ¬μ²λ¦¬ κ°λ₯ : λ©ν°μ°λ λλ₯Ό νμ©νμ¬ λ³λ ¬μ²λ¦¬λ₯Ό μ¬μ©ν μ μμ
λ³λ ¬μ²λ¦¬λ μ¬μ΄ μλ‘ νλμ μΌ(νλ‘κ·Έλ¨)μ μ¬λ¬ λͺ (νλ‘μΈμ)μ΄μ λλ μ ν¨μΌλ‘ μ²λ¦¬ μλλ₯Ό μ¬λ¦¬λ κ±Έ μλ―Ένλ€.
μ°λ¦¬λλΌ μλ΄μΌλ‘ λ°μ§λ©΄ "λ°±μ§μ₯λ λ§λ€λ©΄ λ«λ€"
λλ€μ λ¨μ
1. λλ€μμ νΈμΆμ΄ κΉλ€λ‘λ€.(λ¬Έλ²μ λͺ¨λ₯΄λ©΄ κ·Έλ΄ μ μμ λ―)
2. λλ€ stream μ¬μ© μ λ¨μ λ°λ³΅λ¬Έ(for, while) μ¬μ© μ μ±λ₯μ΄ λ¨μ΄μ§
3. λΆνμνκ² λ¨μ© μ μ€νλ € κ°λ μ±μ λ¨μ΄ λ¨λ¦΄ μ μμ
4. λλ€λ‘ λ§λ ν¨μλ μ¬μ¬μ© λΆκ°
5. λλ²κΉ μ΄ κΉλ€λ‘μ
μμ μ΄λ‘ 보λ€λ μ½λλ₯Ό 보λκ² λ λ μ΄ν΄κ° λΉ λ₯Ό κ² κ°λ€.
λλ€μ μ½λπ
λλ€μ μ΄μ java λ¬Έλ²
μΈν°νμ΄μ€λ₯Ό μ΄μ©ν΄ λ€νμ±μ μ 곡νκΈ° μν΄μ μΈν°νμ΄μ€(Goods)λ₯Ό λ§λ€κ³ κ·Έκ²μ ꡬνν ꡬν체 ν΄λμ€(Computer)λ₯Ό λ§λ λ€ μ¬μ© μ μΈν°νμ΄μ€ νμ μ μ°Έμ‘°λ³μ(com)μ μΈν°νμ΄μ€μ ꡬν체 ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν΄μ μ¬μ©νκ±°λ μλμ²λΌ μ€ννλ μͺ½μμ μ΅λͺ κ°μ²΄λ₯Ό λ§λ€μ΄ μ¬μ©νμμ
μΌνμ©μΌλ‘ μ¬μ©νλ κ²½μ°κ° μλλΌ λ§μΌ Goods ꡬνμ²΄κ° μμ£Ό μ¬μ©λμ΄μΌ λλ κ²½μ°λ μμ²λΌ
μ΅λͺ κ°μ²΄λ₯Ό κ³μ μ¬μ© μ μ½λκ° λ§€μ° μ§μ λΆν΄μ§ κ²μ
λλ€μ
ꡬν체μ μΆλ ₯λ¬Έμ μ£Όμμ²λ¦¬νκ³ λ©μΈ λ©μλμμ λλ€μμΌλ‘ λ°λ‘ μΆλ ₯λ¬Έμ μ μνμ
ν΅μ¬μ λ§€κ°λ³μ + μ€νλ¬ΈμΌλ‘ ꡬμ±λ¨(μ κ·Όμ, λ°νν λͺ¨λ μλ΅λλ ꡬ쑰μ)
() -> {} ννμ΄κ³ 첫 κ΄νΈ()μ ν΄λΉ μΈν°νμ΄μ€ ν¨μμ λ§€κ°λ³μλ₯Ό μ λ ₯νλ©΄ λ¨
κ·Έ λ€μ ->λ₯Ό μ λ ₯ ν μ€κ΄νΈ{} μμ μνν μ½λλ₯Ό μμ±νλ©΄ λ¨
Ob ob = new Ob(); μΈμ€ν΄μ€ν ν νμ μμ
ν¨μλ₯Ό λ°λ‘ λ§λ€μ§ μκ³ (λ§€κ°λ³μ)λ₯Ό μ΄μ©ν΄μ -> {μνμ½λ} μ΄κ±Έ λ°λ‘ μ€ννλ€κ³ μ΄ν΄νλ©΄ λ λ―
λλ€μ μμ π€‘
1. κΈ°λ³Έ μ¬μ©λ²( (νμ λ§€κ°λ³μ)-> {}; )
λλ€μμ νμν κΈ°νΈλ₯Ό λͺ¨λ μ¬μ©ν κ²½μ°
2. λ§€κ°λ³μ νμ μλ΅( (λ§€κ°λ³μ)-> {}; )
λ§€κ°λ³μκ° 1κ° μ΄κ±°λ 2κ° μ΄μμ λ§€κ°λ³μ νμ μ΄ λͺ¨λ κ°μ κ²½μ° νμ μλ΅ κ°λ₯
λ§€κ°λ³μ νμ κ°μ κ²½μ°
λ§€κ°λ³μκ° 1κ°μΈ κ²½μ°
3. λ§€κ°λ³μκ° μλ κ²½μ°( ()-> {}; )
λ§€κ°λ³μκ° μλ κ²½μ° μλμ²λΌ μ½λ λͺΈν΅λ§ ꡬννλ©΄ λλλ° λ§μΌ return typeμ΄ μλ κ²½μ° return ν΄μ€μΌ νλ€.
4. μ€κ΄νΈ μλ΅( ()->; )
μνν μ½λκ° 1κ°μΌ λλ μ€κ΄νΈ{}λ₯Ό μλ΅ν μ μμ, μ΄ λ μ€μν μ μ returnμ΄ νμν λ©μλμΈ κ²½μ° return ν€μλλ₯Ό μλ΅ν΄μΌ ν¨
μμ μ μ¬μ©λ μΈν°νμ΄μ€λ return typeμ΄ intμ΄κΈ°μ returnμ μλ΅ν΄μΌ νλ€.
return λΆμΌ κ²½μ° μλμ²λΌ μλ¬ λ°μ
5. μκ΄νΈ μ€κ΄νΈ μλ΅( λ§€κ°λ³μ -> ; )
λ§€κ°λ³μκ° 1κ°μ΄κ³ μνν μ½λλ 1κ°μ΄λ©΄ μλμ²λΌ ()μ {} μλ΅ κ°λ₯(λ©μλ return typeμ΄ voidμ¬μΌ ν¨)
νμ§λ§ μΈν°νμ΄μ€ μΆμ λ©μλμ return typeμ΄ μλ κ²½μ°λ {} μλ΅ λΆκ°
μ μνμμ μΆμ λ©μλμ return typeμ intλ‘ λ³κ²½νλ©΄ μλμ²λΌ μλ¬λ°μ
String νμ λλ€μ
μ¬μ© μμ μ½λ
ν¨μν μΈν°νμ΄μ€
@FunctionalInterface
public interface Caculator {
// return type voidλ‘ λ°κΏ¨λ€ intλ‘ λ°κΏ¨λ€, λ§€κ°λ³μ μΆκ° νλ©΄μ ν
μ€νΈ
public int cal(int num1);
}
λλ€μ μ½λ
public class Test2 {
public static void main(String[] args) {
// λλ€μ λͺ¨λ κΈ°νΈ μ¬μ©
//Caculator cal = (int n1, int n2) -> {return n1 + n2;};
//System.out.println(cal.cal(1000, 20000));
// νμ
μλ΅(λ§€κ°λ³μ 2κ° νμ
μ΄ κ°μ)
//Caculator cal2 = (n1, n2) -> {return n1+n2;};
//System.out.println(cal2.cal(10, 200));
// λ§€κ°λ³μ μλ΅
//Caculator cal3 = () -> System.out.println("λ§€κ°λ³μ μμ");
//cal3.cal();
// μ€κ΄νΈ μλ΅(μνμ½λ 1κ°)
//Caculator cal = (n1) -> n1 + 1000;
//System.out.println(cal.cal(1000000));
// μκ΄νΈ, μ€κ΄νΈ μλ΅(λ§€κ°λ³μ 1κ°, μνμ½λ 1κ°)
//Caculator cal = n1 -> System.out.println(n1);
//cal.cal(10000);
//Caculator cal = n1 -> n1 + 10000;
//cal.cal(10000);
}
}
λλ€ μ¬μ© 쑰건π€
λλ€λ₯Ό μ¬μ©νκΈ° μν μΈν°νμ΄μ€μλ μ‘°κ±΄μ΄ μμ, λ°λ‘ μΈν°νμ΄μ€μ μΆμ λ©μλκ° 1κ°μΈ κ²½μ°μ΄μΌ ν¨
λλ€μμ μ΅λͺ ν¨μμ΄κΈ° λλ¬Έμ λ©μλκ° μ¬λ¬κ°μΈ κ²½μ° μ΄λ€ λ©μλλ₯Ό μ΅λͺ ν¨μλ‘ κ΅¬νν κ±΄μ§ μ μ μλ€.
μ΄λ₯Ό μν μ¬λ¬κ°μ§ κ·μΉμ΄ μμ§λ§ μ μΌ λͺ νν κ²μ @FunctionalInterfaceμ λΆμ¬μ£Όλ κ²μ΄λ€.
μλμ²λΌ λλ€μ ννμ μ¬μ©λ μΈν°νμ΄μ€μ @FunctionalInterfaceμ λΆμ΄λ©΄ μλ° μ»΄νμΌλ¬κ° μμμ μλ¬λ₯Ό μ‘μμ€
ν¨μν μΈν°νμ΄μ€μ μλμ²λΌ μΆμ λ©μλλ₯Ό 1κ° λ λ§λ€ κ²½μ° μλ¬ λ°μ μν΄
λλ€μ μ¬μ© μΈν°νμ΄μ€μ @FunctionalInterfaceμ λΆμ΄λ μ΅κ΄μ κΈ°λ₯Ό κ²
μ°Έμ‘° : νμ§μ°μ μλ²μ¬μ΄λ κΈ°λΆ λΈλ‘κ·Έ, 2018.09.28, https://khj93.tistory.com/entry/JAVA-%EB%9E%8C%EB%8B%A4%EC%8B%9DRambda%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%82%AC%EC%9A%A9%EB%B2%95
[JAVA] λλ€μ(Lambda)μ κ°λ λ° μ¬μ©λ²
λλ€ν¨μλ? λλ€ ν¨μλ νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©λλ κ°λ μΌλ‘ μ΅λͺ ν¨μ(Anonymous functions)λ₯Ό μ§μΉνλ μ©μ΄μ λλ€. νμ¬ μ¬μ©λκ³ μλ λλ€μ κ·Όκ°μ μνκ³Ό κΈ°μ΄ μ»΄ν¨ν°κ³Όν λΆμΌμμμ
khj93.tistory.com
λ°°μμ΄ μ¦κ±°μ΄ κ°λ°μ, 2019,04,09, https://galid1.tistory.com/509
Java - Lambda Expression(λλ€μ)μ΄λ?
λλ€μμ΄λ λλ€μ μ΄λ 무μμΌκΉμ. κ·Έ λμ javaλ₯Ό μ΄μ©νλ€κ° lambdaμ μ΄λ κ²μ μ²μ 보μμλλ λ§€μ° μμνκ³ κ±°λΆκ°μ΄ λκ»΄μ‘μ΅λλ€. νμ§λ§, java8μμ μΆκ°λ streamκ³Ό κ°μκ³³μμ νλλ²
galid1.tistory.com
νλ¦° μ μμ κ²½μ° λκΈ λΆν λ립λλ€.π

'IT > development' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[php] php <-> cubrid driver μ°λ (0) | 2022.11.23 |
---|---|
[Java] Java Stream μ¬μ©λ² μ 리(jdk 1.8 λΆν° μ¬μ© κ°λ₯) (0) | 2022.11.23 |
[IDE] eclipse tomcat "Serve modules without publishing"... (0) | 2022.11.23 |
[php] Windows 10 Laravel μ€μΉ... (0) | 2022.11.23 |
[apache/php] apache/php λ‘컬νκ²½ μΈν (apm, xampp λ―Έμ¬μ©) (0) | 2022.11.23 |
λκΈ