簡體   English   中英

Getter方法返回兩個不同的對象identityHashCodes

[英]Getter Method is returning two different objects identityHashCodes

幫助一個項目的朋友,我們嘗試調試問題,然后遇到一個更加令人困惑的問題。 我有一個線程通過getter方法獲取某個變量的值,並每500ms打印一次其identityHashCode。 一切正常,直到在Game類中更改了變量。 然后,返回的identityHashCode開始在新對象和舊對象之間來回跳轉。 那是我從未見過的行為,希望你們對發生的事情有任何建議甚至暗示。

在此先感謝,我附加了部分源代碼和控制台輸出。

public GamePlayState(int sid) {
            stateID = sid;
            entityManager = StateBasedEntityManager.getInstance();
            game = new Game(this);
            //TEST CODE ONLY
            Thread t = new Thread(this);
            t.start();
    }

    /******TEST CODE ONLY******/
    public synchronized void run () {
            while (true) {
                    System.err.println(System.identityHashCode(game.getShootL()));
                    try {
                            wait(500);
                    } catch (InterruptedException e) {
                            e.printStackTrace();
                    }
            }
    }

產量

611581887
611581887
611581887
611581887
611581887
611581887
現在值已更改
1709366259
611581887
1709366259
611581887
1709366259
611581887
1709366259

到目前為止,我們還沒有找到真正的答案,但是將getter方法返回的變量設為靜態可以消除該問題。 似乎底層的3rd Party引擎正在混亂對象變量!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM