[英]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.