λλ€ Lambda
π‘ λλ€ Lambda
: μ½λμ μμ΄ μ€μ΄λ€κ³ μ½κΈ° μ½λ€
== μ΅λͺ ν¨μ Anonymous functions
πμΈν°νμ΄μ€μ λ©μλκ° 1κ° μ΄μμ΄λ©΄ λλ€ν¨μ μ¬μ©ν μ μλ€
-> @FunctionalInterface λ λλ²μ§Έ λ©μλλ₯Ό νμ©νμ§ μλλ€ : μ΄λ Έν μ΄μ μ¬μ©
μ¬μ© μ
interface Calculator {
int sum(int a, int b);
}
class MyCalculator implements Calculator {
public int sum(int a, int b) {
return a+b;
}
}
public class Sample {
public static void main(String[] args) {
MyCalculator mc = new MyCalculator();
int result = mc.sum(3, 4);
System.out.println(result); // 7 μΆλ ₯
}
}
μ¬μ© ν
@FunctionalInterface
interface Calculator {
int sum(int a, int b);
}
public class Sample {
public static void main(String[] args) {
Calculator mc = (int a, int b) -> a +b;
int result = mc.sum(3, 4);
System.out.println(result);
}
}
* int a, int bλ sum ν¨μμ μ λ ₯νλͺ© -> a+bκ° λ¦¬ν΄κ°μ ν΄λΉνλ€
* MyCalculatorμ κ°μ μ€μ ν΄λμ€ μμ΄λ Calculator κ°μ²΄λ₯Ό μμ±ν μ μλ€
π‘ λλ€ μΆμ½
: μΈν°νμ΄μ€μ μ΄λ―Έ μ μΆλ ₯μ λν νμ μ΄ μ μλμ΄ μμΌλ―λ‘ μ λ ₯κ°μ νμ μΈ intλ μλ΅κ°λ₯
-> (a, b) -> a+b == Integer.sum(int a, int b) => Integer::sum
π‘ λλ€ ν¨μ μΈν°νμ΄μ€
π BiFunction μΈν°νμ΄μ€ μ¬μ©
import java.util.function.BiFunction;
public class Sample {
public static void main(String[] args) {
BiFunction<Integer, Integer, Integer> mc = (a, b) -> a + b;
int result = mc.apply(3, 4); // sumμ΄ μλ apply λ©μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
System.out.println(result); // 7 μΆλ ₯
}
}
* BiFunction<Integer, Integer, Integer> μμλλ‘ μ λ ₯νλͺ© 2κ°, μΆλ ₯νλͺ© 1κ° μλ―Έ
π BinaryOperator
: μ μΆλ ₯ νλͺ©μ΄ λͺ¨λ λμΌν κ²½μ°
import java.util.function.BinaryOperator;
public class Sample {
public static void main(String[] args) {
BinaryOperator<Integer> mc = (a, b) -> a + b;
int result = mc.apply(3, 4);
System.out.println(result); // 7 μΆλ ₯
}
}