甲功能接口lambda表达式已经调用了被称为目标类型lambda表达式。这意味着,如果为某个“ X”接口调用了lambda表达式,则“ X”是该lambda表达式的目标类型。因此,我们得出结论,lambda表达式只能在Java编译器可以确定Target Type的情况下使用。
在下面的示例中,lambda表达式的目标类型为BiFunction。将自动创建一个实现功能接口的类的实例,而lambda表达式提供功能接口声明的抽象方法的实现。
interface BiFunction { R apply(K k , V v); } public class LambdaTypeInferenceTest { public static void main(String[] args) { BiFunction result = (n1, n2) -> { return n1 + n2;}; // lambda expression Integer n1 = 10; Integer n2 = 20; System.out.println("The addition of n1 and n2 is: "+ result.apply(n1, n2)); } }
输出结果
The addition of n1 and n2 is: 30