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); } }