一、背景
为了解决了匿名内部类代码冗余的问题出现了lambda表达式。函数式接口才可以用lambda表达式。
二、口诀
拷贝小括号,写死右箭头,落地大括号。
三、实例
四、@FunctionalInterface注解
表明这是函数式接口,只有一个方法,可以防止误加方法。
@FunctionalInterface
interface Test{
public int add(int x, int y);
default public int subtract(int x, int y){
return x-y;
}
public static int add2(int x, int y){
return x*y;
};
}
public class LambdaExpressionDemo02 {
public static void main(String[] args) {
// Test foo = new Test() {
// @Override
// public void sayHello() {
// System.out.println("sayHello");
// }
// };
// foo.sayHello();
Test foo = (int x, int y) -> {
return x+y;
};
System.out.println(foo.add(1,2));
System.out.println(Test.add2(1,2));
System.out.println(foo.subtract(1,2));
}
}
五、default和static方法
接口中可以定义多个default方法和静态方法
例子如上。