【发布时间】:2016-06-01 13:55:20
【问题描述】:
我正在尝试用 Java 实例化一个给定字符串的类。像这样的:
// Pseudocode
String name = "MyClass";
SomeClass<name> sc = new SomeClass<name>(parameter);
在我的例子中,构造函数采用Class<E> 类型。所以我会通过MyClass.class。理想情况下,获取字符串并附加.class。结果是这样的:
SomeClass<name> sc = new SomeClass<name>(name.class);
我在这里查看答案:Create new class from a Variable in Java 但无法使其正常工作。使用该链接中的信息,我尝试了这个:
String name = "MyClass";
Class className = Class.forName(name);
className param1;
Constructor con = className.getConstructor(className.class);
SomeClass<className> sc = con.newInstance(param1);
当然,这是行不通的。我将如何实现这一目标?
【问题讨论】:
-
你的目标构造函数的签名是什么?
-
方法签名为:
public SomeClass(Class<E> type) {} -
好吧,说真的:您学习了 Oracle 提供的关于如何进行反射的优秀教程。然后你继续努力。问题是:反射非常复杂。但是当你只是拿起一些别人为你写的代码时,你将无法掌握它。含义:所有这些都记录在案;通过研究这些资源,您将了解更多信息;而不是让其他人向你解释。
-
你能解释一下为什么你认为你需要这个吗?
-
@SotiriosDelimanolis 我正在使用一些 XML 文件进行一些自动化测试。有很多用于解组的类,所以我想要一种方法让开发人员只传递他们想要解组 XML 的类的名称。它节省了大量的编码和修改。
标签: java string class generics