λλ€μμ μλ°8 λ²μ μ μΆκ°λμλ€. 맀κ°λ³μλ₯Ό λ°μ κ°μ λ°ννλ 짧μ μ½λ λΈλ‘, κΈ°μ‘΄ μλ° Methodμ μ μ¬νμ§λ§ μ΄λ¦μ΄ νμνμ§ μμΌλ©°(μ΅λͺ μ±) λ©μλ λ³Έλ¬Έμμ λ°λ‘ ꡬνν μ μλ€. λλ€ ννμμ ν¨μν νλ‘κ·Έλλ°μ λν Javaμ 첫 λ²μ§Έ λ¨κ³μ΄λ€.
λ¨μΌ 맀κ°λ³μμ ννμμ΄ ν¬ν¨λ κ°μ₯ κ°λ¨ν ννμ λλ€μ
parameter -> expression
λ μ΄μμ 맀κ°λ³μλ₯Ό μ¬μ©νλ €λ©΄ κ΄νΈλ‘ λ¬Άλλ€.
(parameter1, parameter2) -> expression
λλ
(parameter1, parameter2) -> { code block }
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> n = new ArrayList<Integer>();
n.add(1);
n.add(2);
n.add(3);
n.add(4);
n.forEach( (m) -> {System.out.println(m); );
// n.forEach(System.out::println)λ κ°λ₯
}
}
ArrayListμ λͺ¨λ νλͺ©μ printνλ €λ©΄ forEach()
λ©μλμμ λλ€μμ μ¬μ©ν μ μλ€.
ArrayList.forEach(Consumer<? super E> action)
interface Drawable {
public void draw()
}
public class LambdaExample {
public static void main(String[] args) {
int width = 10;
// λλ€μ μμ΄
Drawable d = new Drawable() {
public void draw() { System.out.println("Drawing " + width ); }
};
d.draw();
}
}
@FunctionalInterface
interface Drawable {
public void draw();
}
public class LambdaExample {
public static void main(String[] args) {
int width = 10;
// λλ€μ
Drawable d = () -> {
System.out.println("Drawing " + width);
};
d.draw();
}
}
μ λ μ½λ λͺ¨λ μΆλ ₯κ°μ Drawing 10
μΌλ‘ κ°λ€.
νμ€ν λλ€μμ ν¬ν¨νλ μ½λκ° κ°κ²°ν΄μ‘λ€.