我有一個超操作碼和子類添加/ 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'。 –