함수형 인터페이스?
함수형 인터페이스에는 오직 하나의 추상 메서드만 정의되어 있어야 한다.
그래야 람다식과 인터페이스의 메서드가 1:1로 연결될 수 있기 때문이다.
💡람다를 사용하여 함수인터페이스를 구현 하면 익명 함수보다 더 간단한 구조로 코딩이 가능하다. 💡하나의 함수형 인터페이스를 람다를 이용해 여러번 사용이 가능하다 여러가지 기능으로 구현이 가능하다 |
'@FunctionalInterface'를 붙이면, 컴파일러가 함수형 인터페이스를 올바르게 정의하였는지 확인해준다. |
@FunctionalInterface
interface CompInt {
public abstract int max(int a, int b);
}
람다를 사용하지 않고 함수인터페이스를 구현
public class Main {
public static void main(String[] args) {
// 람다를 사용 하지 않고 함수인터페이스 구현
CompInt f = new CompInt() {
public int max(int a, int b) {
return a > b ? a : b;
}
};
System.out.println(f.max(1, 2));
}
람다를 사용하여 함수인터페이스를 구현
public class Main {
public static void main(String[] args) {
// 람다를 사용 하여 함수 인터페이스 구현
CompInt mf = (a, b) -> a > b ? a : b;
System.out.println(mf.max(5, 2));
}
}
하나의 함수형 인터페이스를 람다를 이용해 여러가지 기능으로 구현이 가능하다
@FunctionalInterface
interface MyMethod {
abstract void myMethod();
}
public class Main {
public static void main(String[] args) {
MyMethod f = () -> System.out.println("myMethod() one ing...");
aMethod(f);
aMethod(() -> System.out.println("myMethod() two ing..."));
}
static void aMethod(MyMethod f) {
f.myMethod();
}
}
댓글