2009-01-22 54 views
5

在Java中有沒有一種方法可以通過編程方式導入一個給定其全名作爲字符串的類(即像"com.mydummypackage.MyClass")?如何以編程方式導入Java類

+0

你的意思是導入(到.java文件中)還是你的意思是實例化? – 2009-01-22 21:06:02

回答

15

如果「進口」你的意思是「加載Class對象,以便您可以運行反射法」,然後使用:

Class<?> clazz = Class.forName("com.mypackage.MyClass"); 

(我們之所以讀者被你的話弄得「進口」是通常這指的是在Java類文件頂部附近使用的關鍵字import告訴編譯器如何擴展類名,例如import java.util.*;)。

+1

Object o = clazz.newInstance();如果我們想要使用這個類的對象,就需要它。 – 2014-08-26 05:45:52

6

Java文檔是知識像這樣的東西的重要來源,我建議你類對象的文檔可以在這裏找到讀了起來: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

正如傑森·科恩的答覆中提到,你可以加載使用下面的代碼行,然後創建一個類,你將執行Class對象的newInstance方法,像這樣的一個實例類對象:

Class<?> clazz = Class.forName("com.mypackage.MyClass"); 
Object o = clazz.newInstance(); 
4

不要混淆「進口」與類裝載。

導入語句不加載任何內容。它所做的就是不必輸入完全解析的類名。如果您導入foo.bar.Baz,則可以在代碼中引用Baz類,而不必拼寫出來。這就是所有的進口手段。

+0

aaaah ...好吧,我現在明白了。非常感謝,這是我在閱讀Java 101時錯過的重要一點,我猜... – xelurg 2009-01-23 16:17:12