簡體   English   中英

Java 8泛型使用通配符的麻煩

[英]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<?>類型相同,並且AddableBoxadd方法要求它們相同。

您可以將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM