1

我目前已经完成了使用 GUI 和所有内容制作推箱子游戏,并且我正在优化,我希望使对象尽可能合理,因此需要能够从类/对象中的方法调用构造函数。认为:

public class BoardGame() {

public BoardGame)() {
this(1)
}

public BoardGame(int level){
//Do stuff, like calling filelevel-to-board loaderclass
}

如何在对象/类本身中创建一个调用此对象/类的构造函数的方法?例如:

public BoardGame nextLevel() {
return BoardGame(currentLevel+1);
}

以上显然是未定义的!

这样,如果我想在另一个类中使用这个对象,我应该能够做到:

GameBoard sokoban = new GameBoard(); //lvl1
draw(GameBoard);
draw(GameBoard.nextLevel()); //draws lvl2
4

2 回答 2

2

您需要使用new关键字来调用构造函数。

public BoardGame nextLevel() {
    return new BoardGame(currentLevel + 1);
}
于 2013-02-28T19:45:00.727 回答
0

调用构造函数需要new关键字并且总是创建一个新实例。例如,在您的示例代码中

GameBoard sokoban = new GameBoard(); //lvl1
draw(sokoban );
draw(sokoban.nextLevel()); //draws lvl2
sokoban <-- still level 1

也许您希望 GameBoard 是可变的:

public class GameBoard {

    public GameBoard() {
        setLevel(1);
    }

    private void setLevel(int i) {
        currentLevel = i;
        ....
    }

    public void nextLevel() {
        setLevel(currentLevel+1);
    }
}
于 2013-02-28T19:48:50.847 回答