[英]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.