- 함수형 인터페이스 : 단 하나의 추상 메서드만 선언된 인터페이스
interface MyFunction{
public abstract int max(int a, int b);
}
/* -------------------------- */
// 익명클래스 선언, 객체생성을 동시에
MyFunction f = new MyFunction(){
public int max(int a, int b)
{
return a > b ? a : b;
}
};
int value = f.max(3,5); //ok MyFunction에 max가 있음
- 함수형 인터페이스 타입의 참조변수로 람다식을 참조할 수 있음.
(단, 함수형 인터페이스의 메서드와 람다식의 매개변수 개수와 반환타입이 일치해야함)
MyFunction f = (a,b) -> a>b ? a:b;
int value = f.max(3,5); //실제로는 람다식(익명 함수)이 호출됨
예제)
@FunctionalInterface //함수형 인터페이스는 단 하나의 추상 메서드만 가짐
interface MyFunction{
int max(int a, int b);
}
class Test{
pblic static void main(String[] args)
{
/*
MyFunction obj = new MyFunction(){
public int max(int a, int b)
{
return a > b? a:b;
}
};
*/
MyFunction f = (a,b)-> a>b ? a:b; //람다식 익명객체
int value = obj.max(3,5) //함수형 인터페이스
System.out.println("value="+value);
}
}