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

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

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

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

【问题讨论】:

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

标签: java generics type-erasure


【解决方案1】:

那是行不通的。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多