Java:如何在运行时获取泛型类型

时间:2011-05-06 16:48:47

标签: java generics

  

可能重复:
  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中获取类型?

谢谢!

1 个答案:

答案 0 :(得分:1)

在对象实例上使用getClass()

public void someMethod(T instance) {

    if ( instance != null ) {
        System.out.println("Instance type: " + instance.getClass();
    }

}

您可以使用反射来获取有关检索到的类的更多信息。