从Java中的通用静态方法获取类名
我有一个密码: Model.java:从Java中的通用静态方法获取类名,java,oop,generics,reflection,static-methods,Java,Oop,Generics,Reflection,Static Methods,我有一个密码: Model.java: public abstract class Model <T> { public static <T> T find(int id) { T result = (T) blackMagicMethod(T.class, id); return result; } } ,blackMagicMethod: public Object blackMagicMethod(Class clazz, int id)
public abstract class Model <T> {
public static <T> T find(int id) {
T result = (T) blackMagicMethod(T.class, id);
return result;
}
}
,blackMagicMethod:
public Object blackMagicMethod(Class clazz, int id) {}
行blackMagicMethod(T.class,id)
与中描述的任何黑客一样无法工作
如何使此代码工作?泛型类型的类在运行时不可用,即
T.class
没有意义
泛型类型在编译时被转换为对象
。这就是所谓的
如果确实需要type参数的类
,则需要将其添加为参数:
public abstract class Model <T> {
public static <T> T find(Class<T> clazz, int id) {
T result = (T) blackMagicMethod(clazz, id);
return result;
}
}
公共抽象类模型{
publicstatict-find(类clazz,int-id){
T结果=(T)blackMagicMethod(clazz,id);
返回结果;
}
}
public Object blackMagicMethod(Class clazz, int id) {}
public abstract class Model <T> {
public static <T> T find(Class<T> clazz, int id) {
T result = (T) blackMagicMethod(clazz, id);
return result;
}
}