π[Java] λλ€μ λν΄μβ¦
λλ€ ν¨μκ° λλ¨?
λλ€ ν¨μ
λ μ΅λͺ
ν¨μ
λ₯Ό μ§μΉνλ μ©μ΄μ΄λ€.
κ·ΈλΌ λλ€ ν¨μλ₯Ό μ΄μ©ν ννμμ λλ€ ννμ
μ΄λΌκ³ λ§ν μ μκ² λ€!
λλ€ ννμ
λλ€ ννμ
μ κ°λ¨νκ² λ§νλ©΄ βλ©μλλ₯Ό νλμ μμΌλ‘ ννν κ²βμ΄λ€.
[λ©μλ]
int min(int x, int y) {
return x < y ? x : y;
}
[λλ€ ννμ]
(x, y) -> x < y ? x : y;
[μ΅λͺ ν΄λμ€]
new Object() {
int min(int x, int y) {
return x < y ? x : y;
}
}
μμ μμ μ²λΌ λ©μλλ₯Ό λλ€ ννμμΌλ‘ νννλ©΄, ν΄λμ€λ₯Ό μμ±νκ³ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
κ·Έλ°λ° μλ°μμλ ν΄λμ€μ μ μΈκ³Ό λμμ κ°μ²΄λ₯Ό μμ±νλ―λ‘, βλ¨ νλμ κ°μ²΄λ§μ μμ±ν μ μλ ν΄λμ€λ₯Ό μ΅λͺ
ν΄λμ€
βλΌκ³ ν©λλ€.
λ°λΌμ μλ°μμ λλ€ ννμμ μ΅λͺ
ν΄λμ€μ κ°λ€κ³ ν μ μλ€.
μ΅λͺ (Anonymous) ν¨μ, ν΄λμ€λ?
μκΎΈ μ΅λͺ , μ΅λͺ νλλ° μ΅λͺ ν΄λμ€, μ΅λͺ ν¨μκ° λλ체 λκΉ μΆμλ€.
- μ΅λͺ ν¨μ
- μ΅λͺ ν¨μλ λ§ κ·Έλλ‘ μ΄λ¦μ΄ μλ ν¨μμ΄λ€.
- 곡ν΅μ μΌλ‘
μΌκΈ κ°μ²΄
λ₯Ό κ°μ§κ³ μλ€. - μΌκΈ κ°μ²΄λ, μΌλ°μ μΌλ‘ λ€λ₯Ό κ°μ²΄λ€μ μ μ© κ°λ₯ν μ°μ°μ λͺ¨λ μ§μνλ κ°μ²΄λ₯Ό λ§νλ€.
- μ΅λͺ ν΄λμ€
- μ΅λͺ ν¨μμ λ§μ°¬κ°μ§λ‘ μ΄λ¦μ΄ μλ ν΄λμ€λ₯Ό λ§νλ€.
- ν΄λμ€μ μ μΈ κ°μ²΄μ μμ±μ λμμ νκΈ° λλ¬Έμ λ¨ νλ²λ§ μ¬μ©λ μ μλ€.
- μ½κ² λ§ν΄, μ€μ§ νλμ κ°μ²΄λ§ μμ±ν μ μλ μΌνμ© ν΄λμ€λ₯Ό λ§νλ€.
λλ€ ννμ μμ±λ²
java8λΆν° λλ€ ννμμ μ§μνλ€.
λλ€ ννμμ μμ±νλ λ°©λ²μ νμ΄ν(->)λ₯Ό μ¬μ©νμ¬ μμ±ν μ μλ€.
[λ¬Έλ²]
(맀κ°λ³μλͺ©λ‘) -> { ν¨μλͺΈμ²΄ }
- 맀κ°λ³μμ νμ μ μΆλ‘ ν μ μλ κ²½μ°μλ νμ μ μλ΅ν μ μλ€.
- 맀κ°λ³μκ° νλμΈ κ²½μ°μλ κ΄νΈ(())λ₯Ό μλ΅ν μ μλ€.
- ν¨μμ λͺΈμ²΄κ° νλμ λͺ λ Ήλ¬Έλ§μΌλ‘ μ΄λ£¨μ΄μ§ κ²½μ°μλ μ€κ΄νΈ({})λ₯Ό μλ΅ν μ μλ€. (μ΄λ μΈλ―Έμ½λ‘ (;)μ λΆμ΄μ§ μμ)
- ν¨μμ λͺΈμ²΄κ° νλμ return λ¬ΈμΌλ‘λ§ μ΄λ£¨μ΄μ§ κ²½μ°μλ μ€κ΄νΈ({})λ₯Ό μλ΅ν μ μλ€.
- return λ¬Έ λμ ννμμ μ¬μ©ν μ μμΌλ©°, μ΄λ λ°νκ°μ ννμμ κ²°κ³Όκ° λλ€. (μ΄λ μΈλ―Έμ½λ‘ (;)μ λΆμ΄μ§ μμ)
μμ
μΈνλ° - κΉμν κ°μ¬λμ κ°μ μ€ λλ€ ννμμ μ¬μ©ν κ²½μ°μ μΌλΆλΆμ΄λ€.
[μλ³Έ]
ContextV2 context = new ContextV2();
context.execute(new Strategy() {
@Override
public void call() {
log.info("λΉμ¦λμ€ λ‘μ§1 μ€ν");
}
});
[λλ€ ννμ μ μ©]
ContextV2 context = new ContextV2();
// λλ€μμΌλ‘ λ³ννλ €λ©΄, option + enter λλ₯΄κΈ°
context.execute(() -> log.info("λΉμ¦λμ€ λ‘μ§1 μ€ν"));
μμ μμ λ₯Ό 보면, execute()μ ν¨μμμ 맀κ°λ³μλ‘ λ°λ κ°μ²΄μΈ Strategyμ λ³Έμ²΄μΈ log.info()λ₯Ό νμ΄ν(->)λ₯Ό μ¬μ©νμ¬ κ°λ¦¬ν¨λ€.
μ°Έκ³ μλ£
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
http://www.tcpschool.com/java/java_lambda_concept
https://mindols.tistory.com/103
λκΈλ¨κΈ°κΈ°