对于任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。例如Runnable类就是一个函数式接口,因此lambda被广泛用于线程程序的编写中。
public interface Runnable {
public abstract void run();
}
package MultiProcess;
//lambda表达式推导过程
public class TestLambda {
//2、静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("test lambda2");
}
}
public static void main(String[] args) {
ILike obj1 = new Like();
obj1.lambda();
ILike obj2 = new Like2();
obj2.lambda();
//3、局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("test lambda3");
}
}
ILike obj3 = new Like3();
obj3.lambda();
//4、匿名内部类,没有类的名称,必须借助接口或者父类
ILike obj4 = new ILike() {
@Override
public void lambda() {
System.out.println("test lambda4");
}
};
obj4.lambda();
//5、用lambda简化
ILike obj5 = ()->{System.out.println("test lambda5");};
obj5.lambda();
}
}
//定于一个函数式接口
interface ILike{
void lambda();
}
//1、实现外部类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("test lambda1");
}
}
原文:https://www.cnblogs.com/happysml/p/13827080.html