我有一堂课,叫做口译员。它由一些类继承,包括一个称为LoadStep的类。
我创建了一个对象列表:
public static List<Interpreter> fileActions = new ArrayList<Interpreter>();
对象以这种方式添加:
if (actionName.equals("LOAD")) {
LoadStep loadAction = new LoadStep();
fileActions.add(loadAction);
}
当尝试访问我的对象并调用它们的方法时,我无法访问子类方法。我期待如此,因为当我尝试使用getClass()来查看对象类时,我得到了子类名称。
for (int i = lineNumber; i < Test.fileActions.size(); i++) {
System.out.println(Test.fileActions.get(i).getClass());
if (Test.fileActions.get(i) instanceof LoadStep) {
LoadStep newAction = Test.fileActions.get(i);
myMemoryAddress = Test.fileActions.get(i).getMemoryAddress(); //This line gives me Cannot Find Symbol, as getMemoryAddress is LoadStep's method, and not Interpreter
}
}
打印声明给我:
class test.LoadStep
最佳答案
您需要类型化LoadStep实例,例如
Interpreter step = ...;
if (step instanceof LoadStep) {
LoadStep sub = (LoadStep) step;
sub.invokeSubclassMethod(...)
}