我对你可以更改对象中的字段而不实际使用它们的操作的方式感到困扰。
例如说我有以下课程:
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) 处的对的基数大一。
这是为什么?它不应该只改变我创建的那对而不是实际的那对吗?
料青山看我应如是
犯罪嫌疑人X
相关分类