【发布时间】:2013-05-05 23:05:09
【问题描述】:
Class<?> 和 Class<Object> 在 Java 中的区别是什么? AFAIK Java Erasure 将<?> 更改为它的上限,在这种情况下无论如何都是Object。那么这是干什么用的呢?
【问题讨论】:
-
直觉上,将
Class<Object>设置为Object.class之外的任何内容都感觉不对。主要是因为它让我想起了很多很多形式为“我想将List<String>分配给List<Object>但 Java 不会让我这样做”的问题。编写代码时,您不应该主要关心泛型将擦除到什么 - 泛型的全部意义在于让编译器在它们被擦除之前进行一些类型检查。 -
如果我正确理解了这个问题,我认为docs.oracle.com/javase/tutorial/java/generics/… 解释得很好。
-
Class<?> cls = int.class;// CompilesClass<Object> cls2 = int.class;// Can't convert from Class<Integer> to Class<Object>问题在于你可以把什么放入变量中。
标签: java generics type-erasure