Java 8 Lambda重载

SGr*_*SGr 1 java lambda overloading java-8

我似乎无法使它工作.

Function<Integer, Integer> test = x -> x+x;
Function<String, String> test = x -> x+x;
Run Code Online (Sandbox Code Playgroud)

产量

重复的局部变量 test

如何才能使其test.apply(5)返回10并test.apply("5")返回"55"

Mar*_*nik 9

test是一个变量,它不是一个方法.您不能重载变量.

您可能尝试使用两个方法签名创建一个接口,但结果将不是一个功能接口,您无法使用lambda实现它.再说一遍,我们失败了.


sou*_*eck 6

简单地说:你做不到.

你正在做的不是超载.它创建了两个Function具有冲突名称的接口的独立实例.

它等同于:

int a = 1;
int a = 2;
Run Code Online (Sandbox Code Playgroud)

在同一范围内,同样非法.

如果你可以applyFunction接口中有两个定义,那么就会发生重载- 一个接受String参数,一个接受int.您不能(轻松地)修改java中的现有接口.