java - 类实例改变另一个实例

标签 java

代码是:

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/

相关文章:

java - 用于重命名文件的 Gradle 任务

java - 读取长整型之间的空格

java - Spring Batch 通用作业设计

java - 在 String.matches() 方法中转义句点时遇到问题

java - 什么是 NullPointerException,我该如何解决?

java - 为什么equals和hashCode定义在Object中?

java - 获取div/html元素的高度和宽度服务器端

java - 如何使用 Java 流计算两个聚合函数?

java - 获取 "parse exception"

java - sleep java后图像不绘制