【发布时间】:2020-06-06 23:40:52
【问题描述】:
我有以下代码,旨在通过与字符串比较从一个数组列表中查找对象,然后将该对象添加到另一个数组列表,然后修改第二个数组列表中对象的参数,但是发生的事情是该对象的参数正在两个数组列表中进行修改。
我是 java 新手并了解到因为 java 通过引用传递我正在修改内存中的位置,而不是它的副本,但是因为我正在访问修改方法 (getQuantity() ) 特别是通过第二个数组列表,我认为它会修改该数组列表中的对象,并且仅此而已。
我在这里遗漏了什么,我该如何克服这个问题?
getTheBasket()。返回一个存储产品类型对象的数组列表,theProductList 是一个存储产品类型对象的数组列表。
public void addToBasket(){
String productName = jCustomerProductSelectionBox.getSelectedItem().toString();
Integer quantity = Integer.valueOf(jCustomerQuanityTextField.getText());
castedCustomer.getTheBasket().add(theProductList.find(productName));
castedCustomer.getTheBasket().find(productName).setQuantity(quantity);
}
找到在哪里:
public Product find(String nameInput){
Product selection = null;
for(Product product: this.Products){
if(product.getName().equalsIgnoreCase(nameInput)){
selection = product;
break;
}
}
return selection;
}
对于这里的新手问题,我深表歉意,但我尝试了多种不同的设置,但似乎都不起作用。
【问题讨论】:
-
在另一个列表中插入对象的副本,而不是仅仅引用同一个对象。
-
Java 不是传递引用。 Java 总是按值传递。
标签: java object arraylist pass-by-reference add