如何通过编程导入Java类

5
在Java中,是否有一种以编程方式导入类的方法,只需提供其完整名称作为字符串(例如像"com.mydummypackage.MyClass")?

你的意思是导入(到.java文件中)还是实例化? - Sven Lilienthal
3个回答

15

如果你所说的“导入”是指“加载一个Class对象以便运行反射方法”,那么使用:

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

我们读者对于你使用的“import”一词感到困惑的原因是,通常这个词指的是 Java 类文件顶部用来告诉编译器如何扩展类名的 import 关键字,例如 import java.util.*;


1
如果我们想要使用这个类的对象,就需要使用Object o = clazz.newInstance()。 - Anonymous

6
Java文档是这方面非常好的知识来源,我建议您阅读Class Object文档,该文档可以在这里找到:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html 如Jason Cohen的答案中所述,您可以使用以下代码加载一个Class对象,然后要创建该类的实例,您需要执行Class对象的newInstance方法,就像这样:
Class<?> clazz = Class.forName( "com.mypackage.MyClass" );
Object o = clazz.newInstance();

4

不要将“import”与类加载混淆。

导入语句并不会加载任何内容。它所做的只是使你无需输入完整的类名称。如果你导入了foo.bar.Baz,你可以在代码中引用类Baz而不必拼写它。这就是导入的全部含义。


啊啊啊...好的,我现在明白了。非常感谢,我想这是我在阅读Java 101时错过的重要部分... - xelurg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接