我尝试像这样实例化两个类:
ball = new Ball(gc, board, player, ai, score);
ai = new AiPaddle(gc, ball);我的问题是我的Ball类一直抛出一个空指针异常,因为我传入了一个还没有被实例化的ai。
颠倒这些对象的创建顺序只会使我的AiPaddle类抛出错误,因为它需要ball类。
解决此类问题的最佳方法是什么?我通过在我的ball类中创建了一个名为addAi的新方法来修复它,该方法以ai为参数,所以我有:
ball = new Ball(gc, board, player, score);
ai = new AiPaddle(gc, ball);
ball.addAi(ai);但我相信有一种更好的方法可以做到这一点。
发布于 2013-02-24 19:26:26
更好的方法是有第三个“主”对象,它知道球和AiPaddle。实例化ball和ai,然后将它们传递给"master“。
发布于 2013-02-24 19:36:35
正如Lucas Knuth所评论的,你有一个设计问题。您找到的解决方案是一个很好的解决方案,但不要忘记约定:您设置的是Ball的属性,因此应该调用方法setAi(),而不是addAi()。
下一次,当你设计你的类时,试着避免这个问题。
https://stackoverflow.com/questions/15051251
复制相似问题