2015-12-24 75 views
2

所以我现在正在度假,没有电脑。但...不能停止考虑代码。完全痴迷。无论如何,我自己不能测试这个现在,所以问这里如果这将工作:Java:泛型参数为.class的泛型方法

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

我知道所有类型擦除,但从来没有想过这种方式。在这种情况下,T将成为传递给此方法的实际对象,这要感谢泛型在运行时使用的隐式转换,实际的类类型T是否会在运行时传递给doSomething?或者说T本质上只是Object而铸造废墟的事实呢?

+0

这不是一个重复的问题,OP是问为什么这不起作用,他提供了一个不同的例子。此外,他并没有要求像其他问题一样的解决方法!我没有重新开放privelege,但是这不能被标记为重复 – Tarik

回答

2

这将无法正常工作。

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

在你需要做的东西与实际类本身的情况下,您可以选择存储,并明确必须把它分配给像Class<T> genericClass

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