lambda表示式使用
一共有五种使用情况
package com.yjxxt.lambda.HomeWork;
/**
* lamdba表达式 JDK1.8表达式
* 作用:简化匿名内部类
* 前提:函数式接口
* 语法:
* ()->{}
* (): 要重写抽象方法的参数列表
* -> :箭头函数 【lambda表达式】
* {}:重写抽象方法的方法体
*
* 函数式接口:只有一个必须被重写的抽象方法接口
* 检查是否为函数式接口:@FunctionalInterface
*/
public class DemoLambda {
public static void main(String[] args) {
// 正常创建一个匿名内部类
Test01 test01=new Test01() {
@Override
public void show() {
System.out.println("正常的内部类");
}
};
test01.show();
//1: 使用lambda表达式
Test01 test02=()->{
System.out.println("lambda表达式使用方式: 1");
};
test02.show();
//2: 使用表达式2:当方法体中只有一句,前后的{}可以省略
Test01 test03=()-> System.out.println("lambda表达式使用方法:2");
test03.show();
//3:使用表达式3:当()中有参数列表时,参数的数据类型可以省略不写
Test02 test04=(a,b)-> System.out.println(a+b);
test04.show(1,2);
//4:表示用表达:当()中参数列表只有一个时,()可以省略
Test03 test05=a-> System.out.println("a="+a);
test05.show(6);
//5:使用表达式:当方法体只有一个return语句时,return关键字和{}都可以省略
Test04 test06=a->a>18;
System.out.println(test06.show(19));;
}
}
@FunctionalInterface
interface Test01{
void show();
}
interface Test02{
void show(int a,int b);
}
interface Test03{
void show(int a);
}
interface Test04{
boolean show(int age);
}