Java Lambda Expression 05 top2blue 2016. 8. 9. 19:23 /* * 객체지향 언어인 자바에서 값이나 객체가 아닌 하나의 함수(Funtion)을 변수에 * 담아둔다는 것은 이해가 되지 않을 것입니다. * 하지만 자바 8에서 람다식이 추가 되고 나서는 하나의 변수에 하나의 함수를 * 매핑할 수 있습니다. */ // 이 인터페이스는 람다식을 위한 것이다라는 표현을 위해 어노테이션 // @FunctionalInterface을 사용합니다. // 실제로 저 어노테이션을 선언하면 해당 인터페이스에 메소드를 두 개 이상 선언하면 유효하지 않다는 오류를 냅니다. // 즉, 컴파일러 수준에서 오류를 확인 할 수 있습니다. @FunctionalInterface interface Func { public int calc(int a, int b); } public class LambdaEx05{ public static void main(String[] args) { Func add = (int a,int b)->a+b; Func sub = (int a,int b)->a-b; Func mul = (int a,int b)->a*b; Func div = (int a,int b)->a/b; Func mod = (int a,int b)->a%b; Func sqrt = (int a,int b)->{ int r = 1; while(b>0){ r *= a; b--; } return r; }; System.out.println(add.calc(3,4)); System.out.println(sub.calc(3,4)); System.out.println(mul.calc(3,4)); System.out.println(div.calc(3,4)); System.out.println(mod.calc(3,4)); System.out.println(sqrt.calc(2,10)); } }