gpt4 book ai didi

java - 改变对象的值

转载 作者:行者123 更新时间:2023-11-30 01:55:13 25 4
gpt4 key购买 nike

我对更改对象中的字段而不实际使用对象上的操作的方式感到困扰。

例如,假设我有以下类(class):

public class MultisetPair {
private Object element ;
private int cardinality ;
public MultisetPair(Object element) {
this.element = element ;
cardinality = 1 ;
}
public Object getElement() {
return element ;
}
public int getCardinality() {
return cardinality ;
}
public void setCardinality(int cardinality) {
if(cardinality < 1)
throw new IllegalArgumentException();
this.cardinality = cardinality ;
}
}

我有一个 MultisetPair 对象列表,如下所示:

LinkedList<MultisetPair> multilist = new LinkedList<>();

我做了类似的事情:

MultisetPair pair = multiset.get(3);
pair.setCardinality(pair.getCardinality()+1);

这不仅会改变我刚刚创建的对的基数,还会使 multisetpair(3) 处的对的基数大一。

这是为什么呢?难道它不应该只改变我创建的那对而不是实际的那对吗?

先谢谢了。

最佳答案

让我们看一下List的get()方法的Javadoc here :

Returns the element at the specified position in this list.

根据文档,它返回位于指定位置的元素,并且不会创建实例。您得到的是位置 3 处元素的引用。因此,当您进行更改时,它将应用于现有元素,因为我们没有在此代码中的任何位置创建任何元素(代码中没有构造函数调用)。

关于java - 改变对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54753360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com