3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
您將向您的類和一些構(gòu)造函數(shù)添加一個(gè)復(fù)制方法。
public class Element {
int x;
int y;
public Element(){
}
public Element(int x, int y) {
}
public Element copy() {
return new Element(x, y);
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
}
Element element = new Element(0, 0);
Element secondElement = element.copy();
assert element != secondElement;

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
在您的代碼中,element1 和 firstPoint 是同一個(gè)對象,這是您想要的嗎?
另外,當(dāng)你設(shè)置element2和element3為firstPoint時(shí),之前已經(jīng)修改過了。這可能是一種不需要的副作用。
element1,2,3,4 必須是獨(dú)立的對象:
Element element1 = new Element()
Element element2 = new Element()
Element element3 = new Element()
Element element4 = new Element()
然而,Jason 的解決方案更好,因?yàn)檫@就是 Java 的處理方式。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
關(guān)于“復(fù)制”部分,您可以在元素類中創(chuàng)建復(fù)制構(gòu)造函數(shù)或方法。
構(gòu)造函數(shù):
public Element(Element element){
this.x = element.x
this.y = element.y
}
// ToDo handle null argument if needed if(element==null)return;
// values will be set to 0.
例子:
Element element1 = new Element();
Element element2 = new Element(element1);
方法:
public Element clone(){
Element newCloneElement = new Element();
newCloneElement.x = x;
newCloneElement.y = y;
return newCloneElement;
}
// The above method can implemented as static with an Element argument
// and the values will be copied from the argument.
例子:
Element element1 = new Element();
Element element2 = element1.clone();
我無法回答第二個(gè)問題,因?yàn)槟鷽]有解釋該方法的作用。
添加回答
舉報(bào)