У меня есть суперкласс OpCode и подклассы Добавить/And..etcрефлекторно экземпляр класса с конструктором, который принимает Enum
Я пытаюсь построить рефлекторно подклассы на основе их имя класса строки. Конструктор принимает перечисление, определенное в суперклассе.
Я пытаюсь:
OpCode theOpCode = (OpCode) Class.forName("com.sstangle.opCodes." + opCodeName).getConstructor(OpCode.OpEn.class).newInstance(opEn);
что приводит к
java.lang.NoSuchMethodException: com.sstangle.opCodes.Add.<init>(com.sstangle.opCodes.OpCode$OpEn)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
Надстройка Класс
public class Add extends OpCode {
Add(final OpEn opEn) {
super(opEn);
this.assemblyCommand = "ADD";
}
}
Класс OpCode является
public abstract class OpCode {
OpCode(final OpEn opEn) {
this.opEn = opEn;
}
public static enum OpEn {
I, MI, MR, RM, ZO
}
}
Как правильно получить доступ к конструктору с перечислением?
Благодаря
Этот конкретный класс не имеет такого конструктора, который использует 'com.sstangle.opCodes.OpCode $ OpEn'. Можете ли вы показать конструкторы класса «Добавить»? –
@ ЭндиТурнер обновлен. –
Проблема в том, что ctor не является общедоступным. Попробуйте сделать его общедоступным или используя 'getDeclaredConstructor'. –