小编isa*_*son的帖子

Java 8功能界面模糊引用(这是一个bug吗?)

我有两个与这些类似的功能:

public static <In extends Number, Out extends Number> Out test(In in, Function<In, Out> f) {
    Out x = f.apply(in);
    return test(in, x);
}

public static <In extends Number, Out extends Number> Out test(In in, Out out) {
    return out;
}
Run Code Online (Sandbox Code Playgroud)

对我来说很明显,他们不能(!)发生冲突,并且呼叫不能模棱两可.但是,对于最新版本的Java 8,以下调用失败:

Test.test(2, Integer::new);
Run Code Online (Sandbox Code Playgroud)

Error:(17, 16) java: reference to test is ambiguous both method <In,Out>test(In,java.util.function.Function<In,Out>) in org.test and method <In,Out>test(In,Out) in org.test match

Test.test(2, new Function<Integer, Number>() {
    @Override
    public Number apply(Integer integer) {
       return 10;
    } …
Run Code Online (Sandbox Code Playgroud)

java generics java-8

16
推荐指数
1
解决办法
759
查看次数

标签 统计

generics ×1

java ×1

java-8 ×1