Java8 为了简化匿名内部类过多,对于函数式接口,可以采用lambda表达式进行具体实现。
函数式接口:一个接口只有一个抽象方法,那这个接口就是函数式接口。
例子:
public interface Runnable{
public (abstract) void run();
}
对于这个例子可以直接实现lambda表达式:
new Thread( ()->System.out.println(“…………”) ).start();
演示lambda表达式的演化:
public class TestLambda {
//3.静态内部类
static class Like2 implements ILike{
public void lambda() {
System.out.println("i like lambda2");
}
}
public static void main(String[] args) {
ILike like=new Like();
like.lambda();
like=new Like2();
like.lambda();
//4.局部内部类
class Like3 implements ILike{
public void lambda() {
System.out.println("i like lambda3");
}
}
like=new Like3();
like.lambda();
//5.匿名内部类,不需要类名,必须借助接口或者父类
like =new ILike() {
public void lambda() {
System.out.println("i like lambda4");
}
};
like.lambda();
//6.lambda表达式
like = () -> {
System.out.println("i like lambda5");
};
like.lambda();
}
}
//1.定义函数式接口
interface ILike{
void lambda();
}
//2.定义一个实现类
class Like implements ILike{
public void lambda() {
System.out.println("i like lambda");
}
}
从1到6慢慢演化过来,其中涉及到类的基础知识较多。
有参数的lambda表达式例子:
public class TestLambda2 {
public static void main(String []args){
ILove love=null;
love = (a) -> {
System.out.println("i love lambda" + a);
};
love.love(521);
}
}
//1.定义函数式接口
interface ILove{
void love( int a );
}