Java:泛型参数

时间:2015-12-24 23:45:43

标签: java generics type-erasure

所以我现在正在度假,没有电脑。但是......不能再考虑代码了。完全痴迷。无论如何,现在不能自己测试这个,所以在这里询问这是否有效:

public <T> void foo(T t){
    doSomething(T.class);
}

我知道关于类型擦除的所有内容,但从未考虑过这种方式。在这种情况下,T将是传递给此方法的实际对象,因此,由于泛型在运行时使用的隐式转换,T的实际类类型是否会在运行时传递给doSomething?或者事实上T本质上只是具有铸造废墟的对象?

1 个答案:

答案 0 :(得分:2)

无效。

您无法在运行时获取泛型类型的classgetClass()

如果您需要对实际的类本身进行操作,则必须存储它并明确地将其分配给类似Class<T> genericClass的内容。

public <T> void foo(T t, Class<T> genericClass) { ... }