2 classes 需要另一个 class 才能首先存在。我怎样才能解决这个循环 class 依赖?
2 classes need another class to exist first. How can I solve this circular class dependency?
在我的 GameWorld
class 中,我在构造函数中初始化了一个项目 Rectangle
。
item1 = new Rectangle(GameRenderer.obstacle3.getX() - GameRenderer.generator2.getValue2(), GameRenderer.generator2.getValue1(), 5, 5);
我遇到的问题是,要初始化 GameRenderer.obstacle3
,GameWorld
必须已经存在,而要创建 GameWorld
,GameRenderer.obstacle3
不能为空。
换句话说:GameRenderer.obstacle3
需要GameWorld先存在,但GameWorld
需要GameRenderer.obstacle3
先存在。
这就是我得到 NullPointerException
的原因。
我使用矩形进行碰撞检测,即
if (Intersector.overlaps(wizard.getBoundingRectangle(), item1)) {
GameRenderer.DoublePointsActive = true;
addScore(5);
}
我不知道如何至少通过重组来解决这个问题。
我会避免像这样耦合这些 类。也许你应该重新考虑你的设计。例如,为什么 obstacle3 是 GameRenderer 的成员而不是 GameWorld 的成员?障碍物不适合作为渲染器的成员。
在我的 GameWorld
class 中,我在构造函数中初始化了一个项目 Rectangle
。
item1 = new Rectangle(GameRenderer.obstacle3.getX() - GameRenderer.generator2.getValue2(), GameRenderer.generator2.getValue1(), 5, 5);
我遇到的问题是,要初始化 GameRenderer.obstacle3
,GameWorld
必须已经存在,而要创建 GameWorld
,GameRenderer.obstacle3
不能为空。
换句话说:GameRenderer.obstacle3
需要GameWorld先存在,但GameWorld
需要GameRenderer.obstacle3
先存在。
这就是我得到 NullPointerException
的原因。
我使用矩形进行碰撞检测,即
if (Intersector.overlaps(wizard.getBoundingRectangle(), item1)) {
GameRenderer.DoublePointsActive = true;
addScore(5);
}
我不知道如何至少通过重组来解决这个问题。
我会避免像这样耦合这些 类。也许你应该重新考虑你的设计。例如,为什么 obstacle3 是 GameRenderer 的成员而不是 GameWorld 的成员?障碍物不适合作为渲染器的成员。