2011-05-06 56 views
0

可能重複:
Get generic type of class at runtime
How to get the generic type at runtime?的Java:我如何在運行時得到泛型類型的類型

嗨,

我如何獲得在運行時鍵入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

在對象實例上使用getClass()

public void someMethod(T instance) { 

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

} 

您可以使用反射來獲取有關檢索到的類的更多信息。

+0

嗨JVerstry,謝謝你的回答。但我的問題是,我沒有一個實例作爲參數。在C#中,我可以做typeof(T),並獲得整個類型信息。 – bitsmuggler 2011-05-07 06:39:56

+0

在這種情況下,除了在您的函數中傳遞類參數並從中獲取類型信息外,沒有別的選擇。 – JVerstry 2011-05-07 12:55:07

+0

好的 - 謝謝! – bitsmuggler 2011-05-08 10:05:36