Java8新特性之lambda表达式
导读:1.1 Java8的概述 Java8于2014年3月发布,该版本是 Java 语言的一个重要版本,自Java5以来最具革命性的版本,该版本包含语言、编译器、库、工具和JVM等方面的多个新特性。...
1.1 Java8的概述
Java8于2014年3月发布 ,该版本是 Java 语言的一个重要版本 ,自Java5以来最具革命性的版本 ,该版本包含语言 、编译器 、库 、工具和JVM等方面的多个新特性 。1.2 函数式接口
函数式接口主要指只包含一个抽象方法的接口 ,如:java.lang.Runnable等 。 @FunctionalInterface public interface Runnable { /** * When an object implementing interface {@code Runnable} is used * to create a thread, starting the thread causes the objects * {@code run} method to be called in that separately executing * thread. * <p> * The general contract of the method {@code run} is that it may * take any action whatsoever. * * @see java.lang.Thread#run() */ public abstract void run(); } Java8中提供@FunctionalInterface注解来定义函数式接口 ,若定义的接口不符合函数式的规范便会报错 。 /** * 自定义函数式接口 */ @FunctionalInterface public interface MyFunctionInterface { /** * 自定义有且只有一个的抽象方法 */ void show(); } Java8中增加了java.util.function包 ,该包包含了常用的函数式接口 ,具体如下: 接口名称 方法声明 功能介绍 Consumer void accept(T t) 根据指定的参数执行操作 Supplier T get() 得到一个返回值 Function<T,R> R apply(T t) 根据指定的参数执行操作并返回 Predicate boolean test(T t) 判断指定的参数是否满足条件1.3 函数式接口的使用方式
1.3.1 自定义类实现函数式接口得到接口类型的引用
/** * 自定义类实现接口 */ public class MyFunctionInterfaceImpl implements MyFunctionInterface { @Override public void show() { System.out.println("这里是接口的实现类"); } } MyFunctionInterface myFunctionInterface = new MyFunctionInterfaceImpl(); myFunctionInterface.show();1.3.2 使用匿名内部类的方式得到接口类型的引用
MyFunctionInterface myFunctionInterface = new MyFunctionInterface() { @Override public void show() { System.out.println("匿名内部类的方式"); } }; myFunctionInterface.show();1.3.3 使用Lambda表达式得到接口类型的引用
Lambda 表达式是实例化函数式接口的新方式 ,允许将函数当做参数进行传递 ,从而使代码变的更加简洁和紧凑 。 语法格式:(参数列表) -> { 方法体; } 其中() 、参数类型 、{} 以及return关键字 可以省略 。 MyFunctionInterface myFunctionInterface = () -> { System.out.println("lambda表达式的方式"); }; myFunctionInterface.show(); // 省略{}后的写法 MyFunctionInterface myFunctionInterface = () -> System.out.println("lambda表达式的方式"); myFunctionInterface.show();更多精彩欢迎关注微信公众号《格子衫007》!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!