我可以使用类对象实例化一个类吗? 那些构造函数呢?

我通过( Classname.class )存储类的列表,并想实例化一个? 这可能吗?

newInstance似乎是我之后的方法,但它不支持构造函数?

你不能用这种方式构造新的类。

如果您具有类的名称,则可以使用Class.forName(className)来加载/引用类。

如果您有要创建的类的字节代码,则可以让类加载器加载字节代码并为您提供类。 这可能比您预期的更先进。

您可以使用Class.getConstructors (或Class.getConstructor)来获取可用构造函数的列表,并使用Constructor.newInstance调用它们中的任何一个,它接受参数。

只是添加一点,我看到缺失:

如果它具有公共null构造函数,则可以直接在Class对象上调用newInstance 。 (Null构造函数是没有参数的构造函数。)

否则,您可以通过Class.getConstructors()找到构造函数,正如其他人所说的那样。

反思的Java 教程很好地涵盖了这一点。 但是,基本上是Class.getConstructors,然后是Constructor.newInstance就在它的位置。

Java的设计使您只要使用java.lang / java就可以“欺骗”它。 类或其他标准库。 OOP最重要的事情之一是对象应该处于已定义的状态,因此您可以安全地始终运行构造函数。 即使你使用一些看起来很奇怪的reflection库来完成你的工作。

所以,使用Class.forName(“me.Test”)。newInstance(); (或类似的)将在引擎盖下为您调用Test()构造函数。

如果要调用另一个构造函数,代码类似于:

 Test test = (Test)Class.forName("Test").getConstructor(String.class).newInstance("Hello World"); 

这里getConstructor询问构造函数的样子(它想要一个字符串),然后用字符串调用它。

如果你有一个通过类文字获得的Class对象列表,你也可以静态地引用构造函数而不是陷入reflection邪恶。