所以我现在正在度假,没有电脑。但是......不能再考虑代码了。完全痴迷。无论如何,现在不能自己测试这个,所以在这里询问这是否有效:
public <T> void foo(T t){
doSomething(T.class);
}
我知道关于类型擦除的所有内容,但从未考虑过这种方式。在这种情况下,T将是传递给此方法的实际对象,因此,由于泛型在运行时使用的隐式转换,T的实际类类型是否会在运行时传递给doSomething?或者事实上T本质上只是具有铸造废墟的对象?
答案 0 :(得分:2)
否无效。
您无法在运行时获取泛型类型的class
或getClass()
。
如果您需要对实际的类本身进行操作,则必须存储它并明确地将其分配给类似Class<T> genericClass
的内容。
public <T> void foo(T t, Class<T> genericClass) { ... }