我有一个超操作码和子类添加/ And..etc反思性实例类构造函数采用枚举
我试图反思构建基于其类名称的字符串的子类。构造函数接受一个在超类中定义的枚举。
我想:
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";
}
}
操作码类是
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'这样的构造函数。你可以显示“Add”类的构造函数吗? –
@AndyTurner更新。 –
问题是ctor不公开。尝试公开,或使用'getDeclaredConstructor'。 –