java8新特性之函数式接口
2018-03-25 本文已影响0人
冒险小A
函数式接口(Functional Interface):
- 首先这一定先是个接口,在这个接口中有且只有一个抽象方法,我们称之函数式接口.
- 如果一个接口是函数式接口,我们可以在接口上添加@FunctionalInterface标签表明这个是一个函数式接口.
- 无论是否标识@FunctionalInterface,只要满足上面第1点的接口,java都会直接识别为函数式接口.
- 简化函数式接口的使用是java提供lambda表达式唯一的作用.
- 可以用接口直接来引用一个lambda表达式.
- 函数式接口里允许定义java.lang.Object里的public方法;
函数式接口里允许定义默认方法;
函数式接口里允许定义静态方法;
函数式接口里允许子接口继承多个父接口,但每个父接口中都只能存在一个抽象方法,且必须的相同的抽象方法。 - lambda表达式中的异常处理:lambda表达式中产生的异常要么直接在代码块中处理,要么接口的方法声明抛出.
代码:
public class FunctionalInterfaceTest {
public static void main(String[] args) {
P p= new P() {
public void myWrite(int i) {
System.out.println(i);
}
};
p.myWrite(123);
}
@FunctionalInterface
interface P {
void myWrite(int i);
}
}
函数式接口完全是为实现Lambda而提出的。那现在我们利用Lambda表达式来改写上例:
public class FunctionalInterfaceTest {
public static void main(String[] args) {
P p = num -> System.out.println(num);
p.myWrite(123);
}
@FunctionalInterface
interface P {
void myWrite(int i);
}
}