2013-05-05 278 views
9

在Java中,Class<?>Class<Object>之間的區別是什麼? AFAIK Java Erasure將<?>更改爲上限,無論如何,在這種情況下該值將爲Object。那麼這是爲了什麼?Java中的類<?>和類<Object>之間的區別

+2

直觀的說法,只覺得這是錯有一個'類'是任何比'其他Object.class'。主要是因爲它讓我想起很多很多問題,形式是「我想將一個列表」分配給一個「列表」,但是Java不會讓我這樣做。在編寫代碼時,不應該主要關心泛型將被擦除的問題 - 泛型的全部要點是讓編譯器在擦除之前進行一些類型檢查*。 – millimoose 2013-05-05 23:29:49

+0

可能重複的[有什麼區別?和對象在Java泛型?](http://stackoverflow.com/questions/678822/what-is-the-difference-between-and-object-in-java-generics)。另請參見[Java:列表之間的差異,列表,列表,列表和列表](http://stackoverflow.com/questions/6231973/java-different-between-list-list-listt-liste-and -listobject) – 2013-05-06 03:28:36

+0

我認爲這個http://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html解釋得非常好,如果我正確地理解了這個問題。 – arynaq 2013-05-05 23:35:40

回答

6

不同的是,Collection<String>不是Collection<Object>一個亞型,Collection<?>可用的地方,在任何集合可以放

+1

絕對不是所有收藏的超級類型。首先,'Class'與收藏無關。即使你的意思是超級類型的所有'類'它仍然是錯誤的。對泛型中的通配符有一些額外的閱讀。 – 2013-05-06 02:05:00

+0

修正了這個問題,最好拿掉那個票否 – aaronman 2013-05-06 02:26:51

+2

這是什麼問題 – aaronman 2013-05-06 02:48:59

相關問題