簡體   English   中英

Java泛型,綁定不匹配:類型不是bounded參數的有效替代品

[英]Java generics , bound mismatch: The type is not a valid substitute for the bounded parameter

我有一個應該返回擴展BaseDto類的對象列表的類。

所以我寫了這個

public class Worker<T extends BaseDto> {

   private T t;

     ArrayList<T> getList() {
      ....
     }  
}

這是應該在列表中返回的對象

public class MyDTO extends  BaseDto implements Serializable {
...
}

但是當我寫的時候:

Worker<MyDTO> q = new Worker<MyDTO>();

它不會編譯並顯示以下錯誤:

綁定不匹配:MyDTO類型不是Worker類型的有界參數的有效替代品

怎么了?

Worker<MyDTO> q = new Worker<MyDTO>(); // this is fine

您提供的代碼應該可以運行,我在這里嘗試過,並且可以正常編譯。

但是,此行無法在Java中編譯:

Worker<BaseDto> dto = q; // this is not

因為Java中的泛型類型是不變的 ,這意味着即使X或Y是彼此的子類型,兩種類型的List<X>List<Y>是不兼容的。 在支持協方差的語言中,由於MyDTO是BaseDto的子類型,因此可以編譯此行。

暫無
暫無

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

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