我有一个需要上课的函数
someMethod(Class<T> c){}
对于普通班级来说这很容易,您只需完成
someMethod(myobject.class)
但是由于某些原因,这不会起作用
someMethod(myobject<User>.class)
不会编译。为什么?
没有这样的事情。 MyObject<User>.class
与MyObject.class
完全相同。对于不同的子类型,没有单独的Class
对象; Class
是仅 表示“原始”类型而非通用类型的API。这不是Class
的目的。
如果您需要一个使泛型正常工作,只需将其强制转换即可:例如(Class<MyObject<User>>) MyObject.class
。
简单来说,是您的对象决定了对象的类型,就像您在创建对象时已经声明的那样。做object<Type>.class
是没有意义的,因为它是在对象创建期间确定的。如果需要,您始终可以进行类型转换。