JDK8中可以使用以下简略写法
new Thread(() -> System.out.println("多线程任务执行!")).start(); // 启动线程
Arrays.sort(array,(a,b)->a.getAge()-b.getAge()) //排序
标准格式:
(参数类型 参数名称) -> { 代码语句 }
省略格式:
(a,b)->{代码}
函数式接口:有且仅有一个抽象方法的接口。
修饰符 interface 接口名称 {
public abstract 返回值类型 方法名称(可选参数信息); // 其他非抽象方法内容
}
@FunctionalInterface //可写可不写,类似于@Override
public interface MyFunctionalInterface { void myMethod(); } //定义一个接口
public class Demo07FunctionalInterface { // 使用自定义的函数式接口作为方法参数
private static void doSomething(MyFunctionalInterface inter) {
inter.myMethod(); // 调用自定义的函数式接口方法
}
public static void main(String[] args) { // 调用使用函数式接口的方法
doSomething(() -> System.out.println("Lambda执行啦!"));
}
}
Consumer<T>接口是消费一个数据,抽象方法accept,基本使用如下:
//给你一个字符串,请按照大写的方式进行消费
import java.util.function.Consumer;
public class Demo08Consumer {
public static void main(String[] args) {
String str = "Hello World";
//1.lambda表达式标准格式
fun(str,(String s)->{ System.out.println(s.toUpperCase());});
//2.lambda表达式简化格式
fun(str,s-> System.out.println(s.toUpperCase()));
}
/* 定义方法,使用Consumer接口作为参数 fun方法:
消费一个String类型的变量 */
public static void fun(String s,Consumer<String> con) {
con.accept(s);
}
}