三、Lambda
使用Lambda简化匿名内部类,java8提供了lambda表达式。
-
使用前提:函数式接口
-
函数式接口: 只有一个必须要重写的抽象方法的接口
-
检查函数式接口:@FunctionalInterface
-
组成结构:()->{}
-
() :要重写的抽象方法的参数列表
-
-> :lambda符号,箭头符号,箭头函数,具有上下文推到作用
-
{} :定义抽象方法的方法体
public class LambdaDemo04 {
public static void main(String[] args) {
//r存储Run接口的一个没有名字的实现类对象,存储这个对象的地址
/*Run r=new Run(){
@Override
public void run() {
System.out.println("边被单词边跑步...");
}
};
r.run();*/
//Lambda用来简化匿名内部类
/*Run r=()->{
System.out.println("边笑边跑步...");
};
r.run();*/
//如果方法体只有一句,前后{}可以省略
//Run r=(int x,int y)->System.out.println("边笑边跑步..."+x+y);
//如果方法有参数,参数的数据类型可以省略
//Run r=(x,y)->System.out.println("边笑边跑步..."+x+y);
//当参数列表的参数只有一个,前后的()可以省略
//Run r= x ->System.out.println("边笑边跑步..."+x);
当方法体只有一个语,并且是return语句,return和前后{}可以一起省略
Run r= x ->"哈哈";
System.out.println(r.run(1));;
}
}
@FunctionalInterface
interface Run{//接口
//抽象方法
String run(int x);
}