Java 2个类需要另一个类才能首先存在。如何解决这个循环类依赖关系?
在我的Java 2个类需要另一个类才能首先存在。如何解决这个循环类依赖关系?,java,nullpointerexception,libgdx,collision-detection,circular-dependency,Java,Nullpointerexception,Libgdx,Collision Detection,Circular Dependency,在我的GameWorld类中,我在构造函数中初始化一个项目Rectangle item1 = new Rectangle(GameRenderer.obstacle3.getX() - GameRenderer.generator2.getValue2(), GameRenderer.generator2.getValue1(), 5, 5); 我遇到的问题是初始化GameRenderer.obstacle3aGameWorld必须已经存在,而要创建GameWorld,GameRenderer
GameWorld
类中,我在构造函数中初始化一个项目Rectangle
item1 = new Rectangle(GameRenderer.obstacle3.getX() - GameRenderer.generator2.getValue2(), GameRenderer.generator2.getValue1(), 5, 5);
我遇到的问题是初始化GameRenderer.obstacle3
aGameWorld
必须已经存在,而要创建GameWorld
,GameRenderer.obstacle3
不能为空
换句话说:GameRenderer.obstacle3
需要首先存在游戏世界,但GameWorld
需要GameRenderer.obstacle3
首先存在
这就是为什么我得到了一个NullPointerException
我使用矩形进行碰撞检测,即
if (Intersector.overlaps(wizard.getBoundingRectangle(), item1)) {
GameRenderer.DoublePointsActive = true;
addScore(5);
}
我不知道如何至少通过重新组织来解决这个问题。我会避免像这样耦合这些类。也许你应该重新考虑一下你的设计。例如,为什么obstacle3是GameRenderer的成员而不是GameWorld的成员?障碍物不适合作为渲染器的成员。对于stackoverflow来说,这可能不是一个好问题。也许将来可以尝试这样的问题。对于这个特定的问题,您可能希望消除游戏世界对障碍的依赖,或者反之亦然。试着用铅笔和纸画出你的依赖关系。询问游戏世界为什么需要了解障碍,或者反过来问。