准备知识:函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和 java.util.Comparator都是典型的函数式接口。
java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断, 但 最好在接口上使用注解@FunctionalInterface进行声明,以免团队的其他人员错误地往接口中添加新的方法。Java中的lambda无法单独出现,它需要一个函数式接口来盛放,lambda表达式方法体其实就是函数接口的实现.
推演:
package demo.lambda;
//推导lambda
public class Testlambda {
//静态内部类
static class Like2 implements Ilike{
@Override
public void lambda() {
System.out.println("22222");
}
}
public static void main(String[] args) {
//普通类
Ilike like=new Like();
like.lambda();
//静态类
like = new Like2();
like.lambda();
//局部内部类
class Like3 implements Ilike{
@Override
public void lambda() {
System.out.println("33333");
}
}
like = new Like3();
like.lambda();
//匿名内部类
like=new Ilike() {
@Override
public void lambda() {
System.out.println("44444");
}
};
like.lambda();
//lambda
like=()->{
System.out.println("555555");
};
like.lambda();
}
}
//接口
interface Ilike{
void lambda();
}
//实现类
class Like implements Ilike{
@Override
public void lambda() {
System.out.println("11111");
}
}