1.JAVA1.8的新特性:函数式接口
其特点为:
绝对不能简单理解为只有一个方法的接口(❌),网上有很多博客都对此非常不严谨。
其特点为:
- 只包含一个**抽象方法**
- 但是可以有多个非抽象方法的接口
- 函数式接口可以被隐式转换为 lambda 表达式
- 可以使用使用@FunctionalInterface注解检查它是否是函数式接口,同时javadoc也会有相关说明。函数式接口并不一定要写这个注解。
java.lang.Runnable是1.8之前就有的函数式接口。
而在JDK1.8 新增了函数式接口
java.util.function
其中,包含了很多类用来支持Java的函数式编程,其中有四个接口很常用
说回Runnable接口,来看源码
@FunctionInterface
public interface Runnable{
public void run();
}
很明显,这是一个函数式接口
规定里面只有一个run方法
那么只需要让一个类实现Runnable接口即可,并且也需要覆写run方法。
常规做法实现接口
class MyThread implements Runnable{
private String name;
public MyThread(String name){
this.name=name;
}
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println(this.name+"==>"+i);
}
}
}
用lambada化简
//Lambda表达式简化写法。
new Thread(()-> System.out.println(Thread.currentThread().getName())).start();
JAVA1.8以后,推荐用lambada来实现函数式接口。