我正在尝试实例化两个类:
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);
但我确信有更好的方法可以做到这一点。
答案 0 :(得分:1)
更好的方法是拥有第三个“主”对象,它知道Ball和AiPaddle。实例化ball和ai,然后将它们传递给“master”。
答案 1 :(得分:0)
Lucas Knuth评论说,你有一个设计问题。您找到的解决方案很好,但不要忘记约定:您正在设置Ball的属性,因此您应该调用方法setAi(),而不是addAi()。
下次,当您设计课程时,请尝试防止此问题。