VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Java8新特性之lambda表达式

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 object's
     * {@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();

 

出处:https://www.cnblogs.com/gezishan007/p/16896668.html


相关教程