只有一种抽象方法的接口称为功能接口。可以添加@FunctionalInterface批注,以便我们可以将接口标记为功能接口。Java编译器会自动识别功能接口。
lambda表达式主要用于定义功能接口的内联实现。它消除了对匿名类的需求,并为Java提供了简单而强大的功能编程能力。
几乎没有Java默认接口是下面列出的功能接口java.lang.Runnable
java.util.concurrent.Callable
java.io.FileFilter
java.util.Comparator
java.beans.PropertyChangeListener
语法@FunctionalInterface
interface interface-name {
// only one abstract method
}
示例@FunctionalInterfaceinterface MathOperation {
int operation(int a, int b);
}
public class LambdaExpressionTest {
public static void main(String args[]) {
MathOperation addition = (a, b) -> a + b; // lambda expression
MathOperation multiplication = (int a, int b) -> { return a * b; }; // lambda expression
System.out.println("The addition of two numbers are: " + addition.operation(5, 5));
System.out.println("The multiplication of two numbers are: " + multiplication.operation(5, 5));
}
}
输出结果The addition of two numbers are: 10
The multiplication of two numbers are:: 25