之前给大家带来了java Lambda表达式详细介绍主要是概念方面的知识,那么下面要接着给大家介绍的就是它的优点和缺点以及Lambda表达式实现的接口函数式接口。
1、优点:
2、缺点:
3、函数式接口
Lambda表达式实现的接口不是普通的接口,是函数式接口。
一个接口中,有且只有一个抽象的方法(Object 类中的方法不包括在内),那这个接口就可以被看做是函数式接口。
这种接口只能有一个方法,假如,接口中声明多个抽象方法,那么Lambda表达式会发生编译错误:
The target type of this expression must be a functional interface
这就表明,这个接口不是函数式接口,为了可以防止在函数式接口当中声明多个抽象方法,
Java 8提供了一个声明函数式接口注解@FunctionalInterface,示例代码:
// 可计算接口 @FunctionalInterface public interface Calculable { // 计算两个int数值 int calculateInt(int a, int b); }
在接口之前使用@FunctionalInterface注解修饰,那么试图增加一个抽象方法时会发生编译错误,但可以添加默认方法和静态方法。
@FunctionalInterface注解和@Override注解的作用类似。
Java 8当中,专门为函数式接口引入了一个新的注解@FunctionalInterface,这个注解可用于一个接口的定义上,一旦使用这个注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。
要注意了,即使不使用这个注解,只要满足函数式接口的定义,这仍然是一个函数式接口,使用起来都一样。
注意,Lambda表达式是一个匿名方法代码,Java中的方法必须声明在类或接口中,那么 Lambda表达式所实现的匿名方法是在函数式接口中声明的。
你还想了解更多的相关java基础内容吗,可以继续的通过奇Q工具网来进行了解哦。
推荐阅读: