簡體   English   中英

可以在Java中的非泛型接口的實現中添加泛型嗎?

[英]Possible to add generics to implementation of a non-generic interface in Java?

如果接口定義不使用泛型,是否可以泛化接口的實現? 我無法控制需要實現的接口,但想取消實現的“未經檢查”的警告。

有些問題可以解決,有些則不能。

如果接口例如如下所示:

interface OldInterface {
    List someMethod();
}

那么可以,您可以通過

class NewClass implements OldInterface {
    public List<String> someMethod() {          // DOES COMPILE.
        ...
    }
}

另一方面,如果界面看起來像

interface OldInterface {
    void someMethod(ArrayList list);
}

那么就無法在編程方面做任何事情。

class NewClass implements OldInterface {
    public void someMethod(ArrayList<String> list) { // DOES NOT COMPILE.
        ...
    }
}

這就是所謂的不可避免的泛型類型問題 幸運的是,至少在Eclipse中,可以通過選中忽略下不可避免的泛型類型問題來抑制這些警告。

Windows>首選項> Java>編譯器>錯誤/警告

覆蓋時始終可以限制返回值,這稱為協變量返回類型 添加泛型元素就是這樣。

否則,如前所述,不允許使用限制參數。 覆蓋時,您可以為參數使用更廣泛的類型,這稱為相反方差

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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