[英]Java 8 generics troubles with wildcards
我有界面:
public interface AddableBox<T> extends Box<T> {
public AddableBox<T> add(AddableBox<T> other);
}
和一些使用它的类:
public class TestClass {
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
a1.add(a2);
}
}
示例中的a1和a2必须为相同的类型。
此代码生成错误:
类型AddableBox中的方法add(AddableBox)不适用于参数(T)
如何解决? 对不起,如果重复。
问题是您在绑定的AddableBox
中使用通配符来声明类型参数T
一个AddableBox<?>
的类型不能与另一个AddableBox<?>
类型相同,并且AddableBox
的add
方法要求它们相同。
您可以将T
本身用作边界的类型参数。 更改
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
至
public <T extends AddableBox<T>> void SomeMethod(T a1, T a2){
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.