我查找了语法并搜索了 api,但仍然对过程感到困惑。我还搜索了 Stackoverflow。加载类并从中动态创建对象的正确方法是什么?换句话说,我希望用户指定他们想要创建的对象类型,然后创建该类型的对象。我不需要菜单,因为我希望他们能够选择当前目录中的任何类。
原文由 rubixibuc 发布,翻译遵循 CC BY-SA 4.0 许可协议
我查找了语法并搜索了 api,但仍然对过程感到困惑。我还搜索了 Stackoverflow。加载类并从中动态创建对象的正确方法是什么?换句话说,我希望用户指定他们想要创建的对象类型,然后创建该类型的对象。我不需要菜单,因为我希望他们能够选择当前目录中的任何类。
原文由 rubixibuc 发布,翻译遵循 CC BY-SA 4.0 许可协议
ClassLoader.loadClass
将加载一个类。您通过 myClass.getClassLoader()
获得了一个类加载器 --- 如果它为空,您应该返回到 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");
以上忽略了一堆可能的异常。
原文由 Mike Samuel 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
假设该类具有无参数构造函数,最简单的方法是 -
参考 - java.lang.Class