对象实例化顺序和空指针异常

时间:2013-02-24 11:23:20

标签: java

我正在尝试实例化两个类:

ball = new Ball(gc, board, player, ai, score);      
ai = new AiPaddle(gc, ball);

我的问题是我的Ball类不断抛出Null指针异常,因为我传入的ai尚未实例化。

反转创建这些对象的顺序只会让我的AiPaddle类抛出错误,因为它需要球类。

解决此类问题的最佳方法是什么?我通过在我的球类中创建一个名为addAi的新方法来修复它,它取代了ai,所以我有这个:

ball = new Ball(gc, board, player, score);      
ai = new AiPaddle(gc, ball);    
ball.addAi(ai);

但我确信有更好的方法可以做到这一点。

2 个答案:

答案 0 :(得分:1)

更好的方法是拥有第三个“主”对象,它知道Ball和AiPaddle。实例化ball和ai,然后将它们传递给“master”。

答案 1 :(得分:0)

Lucas Knuth评论说,你有一个设计问题。您找到的解决方案很好,但不要忘记约定:您正在设置Ball的属性,因此您应该调用方法setAi(),而不是addAi()。

下次,当您设计课程时,请尝试防止此问题。