发布时间:2022-11-17 文章分类:编程知识 投稿人:赵颖 字号: 默认 | | 超大 打印

1.1 Java8的概述

1.2 函数式接口

@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();
}
/**
 * 自定义函数式接口
 */
@FunctionalInterface
public interface MyFunctionInterface {
    /**
     * 自定义有且只有一个的抽象方法
     */
    void show();
}
接口名称 方法声明 功能介绍
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表达式得到接口类型的引用

MyFunctionInterface myFunctionInterface = () -> {
    System.out.println("lambda表达式的方式");
};
myFunctionInterface.show();
// 省略{}后的写法
MyFunctionInterface myFunctionInterface = () -> System.out.println("lambda表达式的方式");
myFunctionInterface.show();

更多精彩欢迎关注微信公众号《格子衫007》!
Java8新特性之lambda表达式