我的变量program
是一个带有ByteCode
子类对象列表的对象,我想用名为execute()
的抽象方法执行它。 getNextCode()
获取该列表中的下一个ByteCode
对象。
我的问题是,为什么我要创建ByteCode
的新实例只是为了调用execute()
方法而不是仅引用列表中的实例并按照第二个代码框的方式调用execute方法?有区别吗?是否出于某种原因创建新实例更安全?它是否与动态绑定过程有关?
突出显示两个陈述
program.getNextCode(pc).execute(this);
ByteCode code = program.getNextCode(pc);
code.execute(this);
public void executeProgram() {
runStack = new RunTimeStack();
returnAddrs = new Stack();
isRunning = true;
pc = 0;
while (isRunning) {
ByteCode code = program.getNextCode(pc);
code.execute(this);
public void executeProgram(){
runStack = new RunTimeStack();
returnAddrs = new Stack();
isRunning = true;
pc = 0;
while(isRunning){
program.getNextCode(pc).execute(this);
答案 0 :(得分:1)
在这段代码中:
ByteCode code = program.getNextCode(pc);
您没有创建新的ByteCode实例,只是引用 program.getNextCode(pc
)返回的实例。