我一直在研究一种实例化方法,它允许我将各种类似的类打包到一个外部类中.然后,我可以通过将该类型的名称传递给构造函数来实例化每个唯一的类类型.经过大量的研究和错误,这就是我想出的.我留下了一个错误,以证明我的问题.
import java.lang.reflect.Constructor;
public class NewTest
{
public static void main(String[] args)
{
try
{
Class toRun = Class.forName("NewTest$" + args[0]);
toRun.getConstructor().newInstance();
}
catch(Exception ex)
{
ex.printStackTrace();
System.out.println(ex.getMessage());
}
}
public NewTest(){}
private class one //Does not instantiate
{
public one()
{
System.out.println("Test1");
}
}
private static class two //Instantiates okay
{
public two()
{
System.out.println("Test2");
}
}
}
Run Code Online (Sandbox Code Playgroud)
按照我的意图编译此代码并java NewTest two在输出中运行结果Test2.
运行java NewTest one结果
java.lang.NoSuchMethodException: NewTest$one.<init>()
at java.lang.Class.getConstructor(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud)