gpt4 book ai didi

Java 实现克隆、泛型类。

转载 作者:行者123 更新时间:2023-12-01 05:57:59 26 4
gpt4 key购买 nike

我有一个实现 2Dtable 的类。表中的元素是通用的。该表的存储方式如下:

public Object[][] list;

问题是调用克隆显然不起作用。请注意,我的测试用例初始化表以存储普通整数。

Tabell2D<Integer> en = new Tabell2D<Integer>(5,5);
en.sett(0, 0, 55);
Tabell2D<Integer> to = en.clone();
to.sett(0, 0, 11);
assertTrue(en.equals(to));

我在这里做了一个表格。改变它,克隆它。更改克隆并进行比较。显然克隆已经改变了。即便如此,这个断言True 也是正确的。

equal方法是eclipse生成的:

public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Tabell2D other = (Tabell2D) obj;
if (bredde == null) {
if (other.bredde != null)
return false;
} else if (!bredde.equals(other.bredde))
return false;
if (høyde == null) {
if (other.høyde != null)
return false;
} else if (!høyde.equals(other.høyde))
return false;
if (!Arrays.equals(liste, other.liste))
return false;
return true;
}

我认为问题要么出在列表变量的比较中,要么问题出在克隆方法中。克隆方法:

public Tabell2D<E> clone(){
Tabell2D<E> nyTab = new Tabell2D<E>(this.bredde,this.bredde);
nyTab.liste = liste.clone();
return nyTab;
}

最佳答案

我认为问题的根源在于克隆二维数组并不深入。如果您想要“liste”的深层复制,您需要编写自己的代码来复制每一行(或列,具体取决于您如何看待它)。

关于Java 实现克隆、泛型类。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259486/

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