java - java - 更改对象后如何保持对象不变
问题描述
对不起,如果标题不是很具有描述性,我真的不知道如何表达它。
我有三个单独的 ArrayList,如下所示:
Object m1 = new Object();
Object m2 = new Object();
Object m3 = new Object();
其中都包含一个对象类型的 ArrayList,Objects
以及将值乘以某个整数值的函数:
public void multiply(int n)
{
ArrayList<object> new_objects = new ArrayList<object>();
for (int i=0;i<objects.size();i++) {
Object o = objects.get(i);
o.setValue(o.getValue()*n);
new_objects.add(e); //The multiplication and assignment works as intended here
}
this.objects=new_objects;
}
我调用这个函数,例如:
Object m2_product = m1.multiply(3);
Object m3_product = m1.multiply(3);
其目的是最终得到三个具有不同值的 ArrayList:
m1 与原始值,
m2 与原始值乘以 3,和
m3 的原始值乘以 9。
我的问题是,在打印这些 ArrayLists 值时,它们都乘以 9。它们在定义后继续更新。我的代码有什么问题导致这些变量在赋值后继续更新?
这是针对大学的一个编码项目,所以我不是在寻找一个确切的答案,而只是它不起作用的原因。除了乘法函数之外的所有代码都已提供,并且无法更改。乘法函数一定有问题,但我不知道为什么。
谢谢你。
解决方案
推荐阅读
- php - PHP htmlspecialchars() 或 htmlentities() 例外
- html - Django 日期和时间选择器
- php - 如何在 Wordpress 中禁用 HTTPS 并将 HTTPS 重定向到 HTTP?
- javascript - JavaScript - 用 async / await 替换 setTimeout
- apache-spark - 进行pyspark查询时如何提取json的值
- angular - ngClass 未检测到变量的变化
- azure - azure 数据湖 - 验证 csv 中的要求字段
- react-native - Gradle:无法初始化类 org.codehaus.groovy.runtime.InvokerHelper
- c# - 在 Udemy 课程中了解 MVVM 和 ObjectDetailViewModel
- javascript - 反应原生 | 文本输入