如何为Class<T>
分配值 - 而不必明确传递它?我知道类型擦除的故事。但我想知道:Java编译器没有看到Class<T> c
并意识到我在谈论<T>
,我不应该在没有初始化的情况下使用这个变量!或者不应该将其自动初始化为基元。为什么没有这样设计呢?
static class D<T> {
T t;
Class<T> c;
D(T t) {
this.t = t;
method(t.getClass()); // no error!
c = t.getClass(); // error!
}
void q() {
method(c); // no error at compile time
}
}
static <K> void method(Class<K> clazz) {
}
答案 0 :(得分:3)
这是因为getClass()是Object基类的方法。该方法返回类型“Class <?>
”的值。因此,如果没有类型转换,您无法将其分配给Class<T>
。