作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个实现 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/
我是一名优秀的程序员,十分优秀!