我試圖實例,像這樣兩類:對象實例化順序和空指針異常
ball = new Ball(gc, board, player, ai, score);
ai = new AiPaddle(gc, ball);
我的問題是,我的球類不斷拋出一個空指針異常,因爲我傳遞AI,其中尚未實例化。
顛倒這些對象的創建順序只會讓我的AiPaddle類拋出錯誤,因爲它需要球類。
解決此類問題的最佳方法是什麼?我在我的叫ADDAI球類,它採用人工智能使一個新的方法固定它,而不是讓我有這樣的:
ball = new Ball(gc, board, player, score);
ai = new AiPaddle(gc, ball);
ball.addAi(ai);
但我敢肯定有一個更好的方法來做到這一點。
你有一個依賴問題,這是由不良設計引起的。重新思考這兩個階級的結構。 – 2013-02-24 11:24:55
如果你仔細觀察他們之間的關係,你可以很好地設計你的課程。他們可能有「有」或「是一種」的關係。如果你確定它們,那麼你將設計更好的類,你也將能夠識別和解決任何依賴性問題。 – ankurtr 2013-02-24 11:35:24