2013-05-05 136 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