【发布时间】:2019-08-19 11:36:43
【问题描述】:
我想复制我实现的类对象,而不是按值的引用顺序。
我的代码有时表现得很奇怪。
这是我的类元素
public class Element {
int x;
int y;
public Element(){
}
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;
}
}
我正在使用的示例代码:
public void fourthTurnElement6(){
MainLoopClass.helpTurn=false;
Element element1=firstPoint;
Element element2=secoundPoint;
Element element3=thirdPoint;
Element element4=fourthPoint;
element1.setX(firstPoint.getX());
element1.setY(firstPoint.getY()+1);
element2.setX(firstPoint.getX()+1);
element2.setY(firstPoint.getY());
element3.setX(firstPoint.getX()+1);
element3.setY(firstPoint.getY()-1);
element4.setX(thirdPoint.getX()+1);
element4.setY(thirdPoint.getY());
if(HelperMethods.detectTurnColision(element1,element2,
element3,element4)){
return;
}
if(HelperMethods.detectTurnRightWallColision(element1,
element2,element3,element4)){
return;
}
firstPoint=element1;
secoundPoint=element2;
thirdPoint=element3;
fourthPoint=element4;
是否有可能有时它会正常工作,但有时却不行?在我的代码中似乎detectTurnColision 工作正常,但问题是detectTurnRightWallColision。第二个功能很简单,但我认为错误不会发生在那里。
编辑: 您是否在这里看到任何错误:
Element element1=firstPoint.clone();
Element element2=secoundPoint.clone();
Element element3=thirdPoint.clone();
Element element4=fourthPoint.clone();
element1.setX(firstPoint.getX());
element1.setY((firstPoint.getY()));
element2.setX(firstPoint.getX());
element2.setY(firstPoint.getY()+1);
element3.setX(firstPoint.getX());
element3.setY(firstPoint.getY()+2);
element4.setX(firstPoint.getX()-1);
element4.setY(firstPoint.getY()+2);
if((MainActivity.ELEMENTS-1-firstPoint.getY()<2) )
return;
if(HelperMethods.detectTurnColision(element1,element2,
element3,element4)){
return;
}
if(HelperMethods.detectTurnRightWallColision(element1,
element2,element3,element4)){
return;
}
firstPoint.setX(element1.getX());
firstPoint.setY(element1.getY());
secoundPoint.setX(element2.getX());
secoundPoint.setY(element2.getY());
thirdPoint.setX(element3.getX());
thirdPoint.setY(element3.getY());
fourthPoint.setX(element4.getX());
fourthPoint.setY(element4.getY());
【问题讨论】:
标签: java clone pass-by-reference