在主方法下创建项目

时间:2014-02-23 21:14:54

标签: java methods main stack-overflow items

我是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)

依旧......

我该如何解决这个问题?谢谢你的帮助,非常感谢。 大卫

1 个答案:

答案 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;
    }
    .......
}