public class Program {
IntegSet i1, i2, i3, i4;
i1 = new IntegSet();
i2 = new IntegSet(1,2,5);
i3 = new IntegSet();
i4 = new IntegSet(i2);
}
我的计划的目的是使整台。Java的拷贝构造函数
public class IntegSet{
private final int MAXALLOWEDSETVALUE=2000;
private boolean [] data = new boolean[MAXALLOWEDSETVALUE+1];
我有这样的第一个功能,我认为这是好的。
public IntegSet(int... elts) {
int index = 0;
for(int iteration = 0; iteration < elts.length; iteration++) {
index = elts[iteration];
data[index] = true;
}
}
但对于此功能
public IntegSet(IntegSet source){
this.data = source.data;
}
这是一个拷贝构造函数?我对这是如何工作有点困惑。而从这个函数的区别:
public void setTo(IntegSet source){}
在那里我应该用这个称呼它:
i3.setTo(i3.subtract(i1))
谢谢
如果'data'可以修改,你需要'Arrays.copyOf(数据,data.length)'取而代之的是'data'只是一个参考,如果原来的'IntSet'改变了,那么新的也是。另外,我认为你的原始构造函数是错误的。如果我将'{1,3,5}'传递给你的构造函数,你的'IntSet'会设置ints {0,1,2},因为你从'0'循环到'elts.length'。 – Moira
或简单地'this.data = source.data.clone()'。 – Andreas
好吧,我编辑了我原来的构造函数。你也可以解释一下我应该使用Arrays.copyof(data,data.length)还是clone()?我知道我需要有两个函数setTo(IntegSet源)和复制构造函数。复制构造函数是否正确?如果是这样,复制构造函数和setTo有什么区别?谢谢 – Coder117