【发布时间】:2019-11-16 20:26:12
【问题描述】:
我偶然发现了一个问题,我必须创建一个不接受输入并返回此篮子的 MarketProduct 数组的浅表副本(不是引用的副本)的方法。
我知道解决方法如下
public class Basket {
private MarketProduct[] marketproducts;
public Basket() {
this.marketproducts = new MarketProduct[0];
}
public MarketProduct[] getProducts() {
return this.marketproducts.clone();
我不明白的是 1.如果是浅拷贝,那么它是引用的副本吗? 2.我可以对java中的任何对象使用clone方法吗?它是复制参考还是实际对象?如果是这样,那么可以简化以下内容(而不是使用 for 循环,我可以使用克隆?)?
public void add(MarketProduct input) {
MarketProduct[] list = new MarketProduct[marketproducts.length];
for(int i = 0; i < marketproducts.length; i++) {
list[i] = marketproducts[i];
}
list[list.length-1] = input;
this.marketproducts = list;
}
【问题讨论】:
标签: java