簡體   English   中英

Java類類作為泛型無法正常工作

[英]Java Class class as a generic doesn't work as expected

關於類及其泛型語義的一個簡單問題。 為什么以下代碼不起作用?

Class<Serializable> s = String.class;

Java告訴我Class<Serializable>Class<String>不兼容。 String實現Serializable時,它們怎么可能?

泛型不應該完全允許這種類型的事情嗎?

不,泛型明確不允許這種事情。 經典示例是某種收集類。 如果ArrayList<String>ArrayList<Serializable>的子類,則可以編寫

ArrayList<String> astr = new ArrayList<String>();
ArrayList<Serializable> aser = astr;
aser.add(new Integer());
// This will throw ClassCastException!
String str = astr.get(0);

在此代碼之后,您將擁有一個包含Integer對象的ArrayList <String>()-顯然這不好。

因為Class<String>不是Class<Serializable> 但是Class<String>Class<? extends Serializable> Class<? extends Serializable>

暫無
暫無

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

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