簡體   English   中英

向擴展列表添加列表

[英]Adding list to list that extends

所以我有這種情況。 我已經完成了將一個列表的內容添加到另一列表的任務。 聽起來很簡單。 我的問題是,現有列表具有以下語法:

// Existing code
List<? extends ProductCatalog> listProduct = null;
listProduct = RetrieveService.getInstance().getListProduct("client1");

// My code is 
List<? extends ProductCatalog> listProduct2 = null;
listProduct2 = RetrieveService.getInstance().getListProduct("client2");

如果listProduct是一個普通的List,則只使用AddAll。 但是,它不適用於擴展。 或最有可能,我做錯了。 因此,在此示例中,如何將listProduct2添加到listProduct。

任何幫助,將不勝感激。

以類型安全的方式不可能。 另請參見例如如何添加到列表<? 擴展Number>數據結構?

您可以將它們都合並在新的List<ProductCatalog> ,具體取決於您要實現的目標。

如果必須使用<? extends ProductCatalog> <? extends ProductCatalog>會很困難,但是如果您可以在類ProductCatalog中實現一個空接口,然后聲明List<your_interface> listProduct則可以。

您可以避免在泛型中使用extends關鍵字,而僅使用<ProductCatalog>嗎? 這樣可以使您的生活更輕松。

但是,泛型是編譯時的構造。 因此,您可以編寫一個將兩個列表作為參數且沒有泛型的方法。 這樣,您可以在列表中放入任何內容。 但這不是一個干凈的方法,並且可能會導致其他一些問題,特別是如果您進行了源代碼質量檢查;-)

add(clientProduct, clientProduct2);

private void add(List clientProduct, List clientProduct2){
    clientProduct.addAll(clientProduct2);
}

暫無
暫無

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

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