可能重复:
Get generic type of class at runtime
How to get the generic type at runtime?
你好,
如何在运行时获取java中泛型类型的类型?
在C#中,我可以使用typeof
运算符。使用typeof
运算符,我在运行时获得了一个类型对象,其中包含有关此泛型类型的更多信息。
Java中是否有等效的运算符?
提前致谢。
亲切的问候,帕特里克
//编辑:
我想做什么:
public ArrayList<T> SelectObjects() {
// I need to get here the type name for the oql script!
//this.SelectObjects( "select p from " + Class.forName(T));
}
public ArrayList<T> SelectObjects(String oql) {
try {
Iterator<T> iterator =
this.em.createQuery(oql).getResultList().iterator();
ArrayList<T> objects =
new ArrayList<T>();
while(iterator.hasNext())
{
objects.add(iterator.next());
}
return objects;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
我动态设置了一个oql脚本。如何从T中获取类型?
谢谢!
答案 0 :(得分:1)
在对象实例上使用getClass()
。
public void someMethod(T instance) {
if ( instance != null ) {
System.out.println("Instance type: " + instance.getClass();
}
}
您可以使用反射来获取有关检索到的类的更多信息。