0

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

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

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

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

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

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

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

4

2 回答 2

1

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

于 2013-02-24T11:26:26.127 回答
0

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

下一次,当你设计你的课程时,尽量避免这个问题。

于 2013-02-24T11:36:35.443 回答