Java:泛型参数上带有.class的泛型方法[重复]

Posted

技术标签:

【中文标题】Java:泛型参数上带有.class的泛型方法[重复]【英文标题】:Java: generic method with .class on generic parameter [duplicate] 【发布时间】:2016-03-31 06:11:15 【问题描述】:

所以我现在正在度假,没有电脑。但是...不能停止思考代码。完全着迷。无论如何,我现在不能自己测试这个,所以在这里询问这是否可行:

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

我对类型擦除一无所知,但从来没有这样想过。在这种情况下,T 将是传递给此方法的实际对象,因此,由于泛型在运行时使用的隐式转换,T 的实际类类型是否会在运行时传递给 doSomething?还是 T 本质上只是 Object 的事实是否会破坏这一点?

【问题讨论】:

这不是一个重复的问题,OP 在问为什么这不起作用,他提供了一个不同的例子。此外,他并没有像其他问题那样要求解决方法!我没有重新打开权限,但这不能标记为重复 【参考方案1】:

那是行不通的。

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

如果您需要对实际类本身进行处理,您必须存储它并明确地将其分配给Class&lt;T&gt; genericClass 之类的东西。

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

【讨论】:

以上是关于Java:泛型参数上带有.class的泛型方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java类的泛型方法调用问题

如何在运行时获取泛型的类型

JAVA中的泛型类是啥东西?

java 如何获得List的泛型类型

java中如何得到泛型参数的class?

Java 泛型泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )