newInstance() 与内部类
2022-09-04 06:53:52
我一直在研究一种实例化方法,该方法将允许我将各种类似的类打包到一个外部类中。然后,我可以通过将每个唯一类类型的名称传递给构造函数来实例化该类型。经过大量的研究和错误,这就是我想到的。我留下了一个错误,以证明我的问题。
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");
}
}
}
编译此代码并运行结果输出,正如我所期望的那样。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 NewTest.main(NewTest.java:12)
我对此感到困惑,因为据我所知,我正确地引用了内部类,外部类应该可以访问内部类,并且我有一个默认的no arg构造函数。