我如何调用构造函数?

时间:2013-02-28 19:43:14

标签: java constructor

我目前正在制作带有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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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);
    }
}