当我使用 setAssetWeight 方法设置存储在 ArrayList 中的对象的值时,对象的每个实例都将其 ArrayLists 中的值更改为使用 setAssetWeight 设置的值。
private List<Asset> assetList = new ArrayList<Asset>();
private int fitness;
public Portfolio(){
}
public void setAssetWeight(int i, int weight){
this.assetList.get(i).setWeight(weight);
}
例如:如果我创建了两个 Portfolio 对象 pf1 和 pf2,然后执行
pf1.setAssetWeight(0, 10);
当我打印 pf2 中包含的资产的权重时,它将显示第一个资产的权重为 10,而不是默认的 0。
为什么当我使用另一个对象调用该方法时,该对象的一个实例的 ArrayList 中的值会发生变化?ArrayList 被声明为私有的,这不应该意味着它只能被它所属的对象修改吗?
Portfolio1 pf1 = new Portfolio1();
Portfolio1 pf2 = new Portfolio1();
pf1.add(0, assetList.get(0));
pf1.add(1, assetList.get(1));
pf1.add(2, assetList.get(2));
pf1.setAssetWeight(0, 10);
System.out.println(pf2.toString());
这是我用来测试的代码部分,在这个例子中,打印语句将打印出 AssetList 中的第一个资产的权重为 10,即使我只设置了 pf1 的权重,而不是 pf2。
public void add(Asset asset){
this.assetList.add(asset);
}
这是用于将资产添加到列表的代码。