我是Java新手,所以对所有这些都不太自信。 我目前有这段代码
public static void main(String[] args)
{
Map m = new Map();
PlayGame p = new PlayGame();
GameLogic g = new GameLogic();
p.startup();
m.load();
g.player_position();
p.commands();
}
Map m = new Map();
GameLogic g = new GameLogic();
我有main方法,但也创建了一些项目(我认为这就是他们所谓的),使这个类能够读取其他类中的变量。 我之前刚刚在我的所有变量前面使用过'public static',但是我知道这是更好的方法。 但是,当我运行时,我收到此错误消息:
Exception in thread "main" java.lang.StackOverflowError
at PlayGame.<init>(PlayGame.java:28)
at Map.<init>(Map.java:7)
at PlayGame.<init>(PlayGame.java:19)
at Map.<init>(Map.java:7)
at PlayGame.<init>(PlayGame.java:19)
at Map.<init>(Map.java:7)
依旧......
我该如何解决这个问题?谢谢你的帮助,非常感谢。 大卫
答案 0 :(得分:0)
好像你正在Map Map中创建一个PlayGame。每次你创建一个新的PlayerGame对象时你也会创建一个Map对象,每次创建一个Map对象时它也会创建一个PlayerGame对象,每次你创建一个PlayeGame哦......你明白了,你处于无限循环中。
每次创建新Map时,不要创建新的PlayerGame对象,而是将playerGame对象作为参数传递给Map类的承包商
public static void main(String[] args)
{
PlayGame p = new PlayGame();
Map m = new Map(p);
GameLogic g = new GameLogic();
p.startup();
m.load();
g.player_position();
p.commands();
}
class Map{
PlayerGame pg;
public Map(PlayerGame pg){
this.pg=pg;
}
.......
}