用Java动态加载类

时间:2011-04-06 18:52:29

标签: java dynamic

我查了解语法并搜索了api,但我仍然对这个过程感到困惑。我还搜索了Stackoverflow。加载类并动态创建对象的正确方法是什么?换句话说,我希望用户指定他们想要创建的对象类型,然后创建该类型的对象。我不想要菜单,因为我希望他们能够选择当前目录中的任何类。

3 个答案:

答案 0 :(得分:18)

假设类具有no-arg构造函数,最简单的方法是 -

Object newObject = Class.forName(strFullyQualifiedClassName).newInstance();

参考 - java.lang.Class

答案 1 :(得分:7)

ClassLoader.loadClass将加载一个类。您可以按myClass.getClassLoader()获得一个类加载器,如果该值为null,则应该返回ClassLoader.getSystemClassLoader()

一旦有了类实例,就可以通过getDeclaredConstructor(...)获取它的构造函数。 因此,如果您的public class MyClass具有public MyClass(String) { ... }之类的构造函数,那么

Class<MyClass> clazz = MyClass.class;
Constructor<MyClass> ctor = clazz.getDeclaredConstructor(String.class);
MyClass instance = ctor.newInstance("foo");

以上忽略了一系列可能的例外情况。

答案 2 :(得分:4)

这是我的工作。这不是一个成品,只是测试我是否可以让它工作。感谢所有回答问题的人: - )。