第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Java 中按值克隆對象的方法 - 而不是按引用

在 Java 中按值克隆對象的方法 - 而不是按引用

動(dòng)漫人物 2023-06-14 16:10:56
我想復(fù)制我實(shí)現(xiàn)的類對象,而不是按值作為參考順序。我的代碼有時(shí)會(huì)以奇怪的方式運(yùn)行。這是我的班級元素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;是否有可能有時(shí)它會(huì)正常工作但有時(shí)卻不能?在我的代碼中似乎detectTurnColision工作正常但問題是detectTurnRightWallColision。第二個(gè)函數(shù)非常簡單,但我不認(rèn)為錯(cuò)誤發(fā)生在那里。
查看完整描述

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;


查看完整回答
反對 回復(fù) 2023-06-14
?
jeck貓

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 的處理方式。


查看完整回答
反對 回復(fù) 2023-06-14
?
明月笑刀無情

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)槟鷽]有解釋該方法的作用。


查看完整回答
反對 回復(fù) 2023-06-14
  • 3 回答
  • 0 關(guān)注
  • 161 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號