Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2个类需要另一个类才能首先存在。如何解决这个循环类依赖关系?_Java_Nullpointerexception_Libgdx_Collision Detection_Circular Dependency - Fatal编程技术网

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
a
GameWorld
必须已经存在,而要创建
GameWorld
GameRenderer.obstacle3
不能为空

换句话说:
GameRenderer.obstacle3
需要首先存在游戏世界,但
GameWorld
需要
GameRenderer.obstacle3
首先存在

这就是为什么我得到了一个
NullPointerException

我使用矩形进行碰撞检测,即

if (Intersector.overlaps(wizard.getBoundingRectangle(), item1)) { 
                GameRenderer.DoublePointsActive = true;
                addScore(5);
}

我不知道如何至少通过重新组织来解决这个问题。

我会避免像这样耦合这些类。也许你应该重新考虑一下你的设计。例如,为什么obstacle3是GameRenderer的成员而不是GameWorld的成员?障碍物不适合作为渲染器的成员。

对于stackoverflow来说,这可能不是一个好问题。也许将来可以尝试这样的问题。对于这个特定的问题,您可能希望消除游戏世界对障碍的依赖,或者反之亦然。试着用铅笔和纸画出你的依赖关系。询问游戏世界为什么需要了解障碍,或者反过来问。