方法接口
只有一个抽象方法的接口。方法接口存在的目的就是为了传递一个方法,例如
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
Java8后增加了注解@FunctionalInterface
来指明一个接口是方法接口
实现方法接口的抽象方法
传统方法
定义子类
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("hello");
}
}
使用匿名内部类
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("hello");
}
}
lambda表达式
可看作匿名内部类的语法糖
Runnable runnable = () -> {
System.out.println("hello");
};
可简化为
Runnable runnable = () -> System.out.println("hello");
参数列表为1个参数,则小括号可省略。表达式内只有一个语句时,大括号、语句最后的分号和return
可省略
方法引用
当lambda表达式内部只调用一个方法的时候,在无需引入新的参数时,可以使用方法引用进行简化
Runnable runnable = System.out::println;
通用函数式接口
Java8准备好了一系列的通用函数式接口