2012-09-05 96 views
7

我想打印包中的所有類名稱,並在每個包中打印相應的屬性及其數據類型。如何將字符串類型轉換爲java中的類類型

在一個代碼中,我能夠以字符串的形式獲取類名。 在另一個代碼中,我能夠使用Classname.class.getAttribute();

但是我想要合併這兩個代碼。由於在第一個代碼中,我以字符串的形式得到了類名,因此我不能使用Classname.class.getAttribute(),因爲這裏Classname的類型是String

所以我想要一個將「Classname」從String類型轉換爲Class類型的方法。我試過Class.forName(),但沒有奏效。

+6

請指定Class.forName()如何「不起作用」。 – skiphoppy

+3

如果Class.forName()不起作用,它很有可能a)類名稱不正確b)您收到錯誤消息,但不知道它是什麼意思,因此您忽略了它。 ;) –

+1

發佈你的錯誤信息!並在你嘗試使用'Class.forName()'發佈代碼' –

回答

16
Class<?> classType = Class.forName(className); 

確保className是完全合格的類名像com.package.class另外,請分享你看到錯誤消息。

+0

是的,className不完全合格。 給予完全合格的名稱,它的工作:) 謝謝:) –

1

如果某個類的完全限定名稱可用,則可以使用靜態方法Class.forName()獲取相應的Class。

如:

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 

注:確保您提供該函數的參數是一樣com.package.class

Check here凡提述完整的類名。

編輯:

您也可以嘗試使用loadClass()方法。

如:

ClassLoader cl; 
Class c = cl.loadClass(name); 

它是由Java虛擬機調用來解決類的引用。

語法:

public Class<?> loadClass(String name) 
        throws ClassNotFoundException 

For details on ClassLoader check here

Here ClassLoader的實現。

0

請嘗試以下操作。

String str = "RequiredClassName";  
Class <?> Cref = Class .forName("PackageNaem."+str); 
相關問題