lambda
java8的新特性 lambda表达式
目的:
为了简化匿名内部类对象
匿名内部类:
简化实现类|子类
lambda的前提:
函数式接口
函数式接口:
只有一个必须被重写的抽象方法的接口
检查函数式接口的方式:
@FunctionalInterface
lambda表达式结构:
()->{}
(): 重写的抽象方法的参数列表
->: 箭头函数 lambda符号 具有上下文推到的作用
{}: 重写的抽象方法的方法体
public class LambdaDemo01 {
public static void main(String[] args) {
//匿名内部类的对象
/* Demo demo = new Demo(){
@Override
public void test() {
System.out.println("hahahaha");
}
};*/
//lambda的接口简化匿名内部类对象的写法
//写法1.lambda写法1
/*Demo demo =()->{
System.out.println("哈哈哈笑");
};*/
//写法2.当抽象抽象方法的方法体语句只有一句的时候,前后的{}可以省略
//Demo demo =()->System.out.println("哈哈哈笑");
//写法3.抽象方法有参数,参数的数据类型可以省略
//Demo demo =(a,b)->System.out.println("哈哈哈笑");
//写法4.抽象方法的参数只有一个,前后的()可以省略
//Demo demo =a->System.out.println("哈哈哈笑");
//写法5.抽象方法有返回值类型,方法的语句体只有一个,并且是return语句的时候,前后的{}与return关键字可以一起省略
/*Demo demo = a ->{
return "fanhuizhi";
};*/
Demo demo = a ->"fanhuizhi";
System.out.println(demo.test(1));;
}
}
//接口
@FunctionalInterface
interface Demo{
String test(int a);
}