2009-01-22 58 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