如何在Java中传递泛型的Class变量?

我有一个需要上课的函数

someMethod(Class<T> c){}

对于普通班级来说这很容易,您只需完成

someMethod(myobject.class)

但是由于某些原因,这不会起作用

 someMethod(myobject<User>.class)

不会编译。为什么?

mcl1987 回答:如何在Java中传递泛型的Class变量?

没有这样的事情。 MyObject<User>.classMyObject.class完全相同。对于不同的子类型,没有单独的Class对象; Class是仅 表示“原始”类型而非通用类型的API。这不是Class的目的。

如果您需要一个使泛型正常工作,只需将其强制转换即可:例如(Class<MyObject<User>>) MyObject.class

,

简单来说,是您的对象决定了对象的类型,就像您在创建对象时已经声明的那样。做object<Type>.class是没有意义的,因为它是在对象创建期间确定的。如果需要,您始终可以进行类型转换。

本文链接:https://www.f2er.com/3154818.html

大家都在问