簡體   English   中英

為什么通用分配不起作用?

[英]Why doesn't this generic assignment work?

我有這樣的方法:

<T extends ImportedGroupTxtContact> Importer<T> createImporter(Class<T> classToImport) 

在方法主體中可以:

ParseResult<? extends ImportedGroupTxtContact, ?> parseResult = new ParseResult<ImportedGroupTxtContact, ChildContactField<?>>();

但這不是:

ParseResult<T, ?> parseResult = new ParseResult<ImportedGroupTxtContact, ChildContactField<?>>();

這對我來說毫無意義,因為T extends ImportedGroupTxtContact的上限與? extends ImportedGroupTxtContact ? extends ImportedGroupTxtContact 到底是什么問題?

T擴展了ImportedGroupTxtContact 因此它可以是ImportedGroupTxtContact任何子類。 讓我們用Fruit代替它。 蘋果延長水果。 但是你做不到

Basket<Apple> basket = new Basket<Fruit>();

實際上, Basket<Apple>僅接受蘋果,而Basket<Fruit>接受任何種類的水果。

您正在將ParseResult<A, B>分配給ParseResult<T, ?> ,其中T可能等於或可能不等於A ,因此這必須失敗。 更確切地說, T可以是A任何子類型。 事實T? 在第一個示例中,兩者的上限相同,因此在此處不輸入方程式。

暫無
暫無

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

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