代码是:
package classes;
public class Test {
private static double mutationRate = 0.5;
public static void main(String[] args) {
Population pop = new Population();
pop.initialise();
Population po = new Population();
po.getIndividusList().add(pop.getFittest());
po.getIndividusList().add(mutate(pop.getIndividusList().get(1)));
}
private static Chromosom mutate(Chromosom l) { // changer les couples d'interventions des parcs)
// loop through genes
Chromosom ch = new Chromosom();
for (int i = 0; i < l.size(); i++)
ch.put(i, l.get(i));
for (int i = 0; i < ch.size(); i++) {
double alea = Math.random() * 13;
int moisIntervention1 = (int) alea;
Intervention interv1 = new Intervention(1, moisIntervention1);
ch.get(i).modInterventions(ch.get(i).intervention2(interv1));
}
return ch;
}
}
问题是我没有更改实例 pop,但是当我更改其他实例 po 时,pop 也会更改。
最佳答案
java 按值传递。
当你调用这个mutate(pop.getIndividusList().get(1))
您正在发送 pop 的实例,因此它会发生变化。
假设pop.getIndividusList().get(1)
返回String varibale
这样做
String var=pop.getIndividusList().get(1);
然后调用mutate(var)
关于java - 类实例改变另一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25242834/