newInstance () с внутренними классами

Я работал над методом создания экземпляров, который позволит мне упаковать множество похожих классов в один внешний класс. Затем я мог бы создать экземпляр каждого уникального типа класса, передав имя этого типа в конструктор. После многих исследований и ошибок, это то, что я придумал. Я оставил ошибку, чтобы продемонстрировать свой вопрос.

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)

Я запутался в этом, потому что, насколько мне известно, я правильно ссылаюсь на внутренний класс, внешний класс должен иметь доступ к внутреннему классу, и у меня по умолчанию нет конструктора arg.

Ответы на вопрос(3)

Ваш ответ на вопрос