gpt4 book ai didi

java - 泛型问题 - 推断类型不符合声明的边界

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:10 28 4
gpt4 key购买 nike

我们目前有一个类无法使用 openjdk 6 进行编译。以下缩短的类重现了此错误:

public class Copy implements ICopy {        
public <A,B extends List<A>,C extends Map<A,B>> A method(A a, B b) {
A something = null;
return something;
}

@Override
public <A,B extends List<A>> A method2(A a, B b) {
return method(a,b);
}
}

界面很简单,它只是表明,我们无法更改method2 的签名:

public interface ICopy {    
public <A,B extends List<A>> A method2(A a, B b);
}

它使用 oracles java 版本和 openjdk 7 编译 - 但使用 openjdk 6 失败,不幸的是,这是我们必须用来编译(原始)代码的版本。

错误信息是

Copy.java:15: invalid inferred types for C; inferred type does not conform to declared bound(s)
inferred: java.util.Map<A,B>
bound(s): java.util.Map<A,B>
return method(a,b);
^

我所需要的只是一些想法,如何更改 method2 的实现,以便它可以编译。我什至不关心编译器警告...

最佳答案

我会尝试明确指定边界,如下所示:

return this.<A,B,Map<A,B>>method(a,b);

但是,更一般地说,我根本看不到类型参数 C 的必要性。 method 的参数或其返回类型都没有引用 C,所以如果您可以更改 method 的签名,我会省略完全是那种类型的参数。

关于java - 泛型问题 - 推断类型不符合声明的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com