我一直理解 Java 是按值传递参数的。我有一些似乎无法调试的代码。这是一个简化版本:
private isFinished = false;
private int target, count;
public Example(int target){
this.target = target;
}
public void doProcess(int x){
count += x;
}
public boolean isFinished(){
if(x < target){
return false;
} else {
return true;
}
}
private Example example;
public Test(Example e){
this.example = e;
}
public isFinished(){
return e.isFinished();
}
public void doProcess(){
e.doProcess(3);
}
private Example example;
public Generate(Example e){
this.example = e;
}
public void generate(int num){
for(int y=0; y < num; y++){
Test t = new Test(example);
while(t.isFinished == false){
t.doProcess();
}
}
}
Generate 类将 Example 作为参数。它使用此示例并将其传递给“测试”。发生的情况是,当调用 Generate.generate() 时,第一次迭代正常工作,但在每次迭代时,都应该使用作为参数传递的示例进行新的测试。当调用 doProcess() 时,“示例”似乎正在发生变化,而我想要的是每次使用创建时传递给 Generate 的相同示例来创建一个新的测试。