Functional
接口简介Functional
接口?包含有单一抽象方法(Single Abstract Method
)的接口就是Functional
接口。简单来讲,就是有且只有一个非default方法
的接口。为何default方法
不被计算进去呢?缘由也很简单,由于default方法
是已经有了一个实现了啊,因此并非抽象的。多线程
全部Functional
接口都建议打上@FunctionalInterface
注解。
这样作有两个好处:异步
lambda表达式
使用。Functional
接口以即可以在lambda表达式
中使用,但实际上这个接口却包含了一个以上的非default方法
,这时编译器就会提示你,“小伙,你确定弄错了什么,这不是Functional
接口啊”。现实世界中的例子线程
多线程中用于执行无返回结果的Runnable
接口,只有一个run
方法,很“简单”的嘛!code
@FunctionalInterface public interface Runnable { public abstract void run(); }
使用示例接口
在主线程外异步地执行任务(使用lambda表达式
):编译器
public static void main(String[] args) { new Thread(() -> System.out.println("Hello 彬哥!")).start(); }
一行代码仍是作了很多事情的嘛:io
Runnable
。纳尼?哪里?没错, 就是() -> System.out.println("Hello 彬哥!")
,这是一个lambda表达式。new Thread()
。start()
。Functional
接口,要打上@FunctionalInterface
注解。