簡體   English   中英

傳遞泛型圖有什么問題

[英]What's wrong with passing generics map

我跟隨在Car類的構造函數中調用:

public Car(Map<String, ? extends List<? extends WingMirror>> wingMirrorMap) {
    doSomething(wingMirrorMap); // Here i have error
}

private static <L extends List<M>, M extends WingMirror<T>, T> Map<String, L> doSomething (Map<String, L> wingMirrorMap) {
    // Do something with wingMirrorMap
}

通過傳遞參數wingMirrorMap我遵循了錯誤:

The method doSomething(Map<String,L>) in the type Car is not applicable for the arguments (Map<String,capture#2-of ? extends List<? extends WingMirror>>)

為什么不起作用。 我看不到任何方法調用可能出錯的地方。

您的問題是List<? extends WingMirror> List<? extends WingMirror>聲明。

通過讓M extends WingMirror<T>在其簽名中M extends WingMirror<T> ,聲明您的doSomething方法僅采用WingMirror的一種子類型。 但是汽車構造函數正在嘗試傳遞允許具有不同WingMirror子類型的WingMirror

例如,如果您有WingMirror兩個子類型為SubWingMirror1SubWingMirror2 doSomething將僅采用僅具有SubWingMirror1SubWingMirror2而沒有兩者的列表。 但是List<? extends WingMirror> List<? extends WingMirror>可以混合使用兩種子類型。

暫無
暫無

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

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