根据变量创建类的实例

问题描述 投票:0回答:2

我正在开发一个项目,用于为uni创建一个简单的2d平台游戏,我们建议处理级别的方法是创建一个抽象级别类,然后是为每个单独级别实现它的其他类,所以:

abstract class GameLevel {}
class Level1 extends GameLevel {}
class Level2 extends GameLevel {}
etc...

然后在我的主类中,我有一个变量来跟踪当前的级别数,并且代码可以移动到下一个级别,基本上是:

public void goNextLevel() {
    world.stop();
    if (level == FINAL_LEVEL) {
        // win code
    } else {
        level++;
        world = new Level/*next level number*/();
    }
}

我想知道是否有办法获取包含级别编号的变量并将其添加到类调用的末尾,以节省必须有一堆if else语句。

在此先感谢您的帮助

编辑:我之所以不热衷于将所有内容放在一个类中然后使用其中的变量来更改级别的原因是每个级别必须具有相对大量的实体,每个实体需要几行来设置并且,在一个文件中添加所有级别将导致数百行代码难以维护

java
2个回答
0
投票

你会这样做:

      try {
         final Class<?> clazz = Class.forName("your.package.Level" + levelInteger);
         final Constructor<?> ctor = clazz.getConstructor();
         final GameLevel level = (GameLevel) ctor.newInstance();
         System.out.println(level.getClass().getName());
      } catch (final Exception e) {
         e.printStackTrace();
      }

来源和解释:https://stackoverflow.com/a/6094602/8160563


0
投票

假设每个LevelN类中只有一个对象,最简单的方法是将它们存储到数组中

GameLevel[] levels = new GameLevel[5];
levels[0] = new LevelOne();
levels[1] = new LevelTwo();

然后有一个小帮助方法来检索它们

GameLevel getNextLevel(int currentLevel) {
    return levels[currentLevel];
}
© www.soinside.com 2019 - 2024. All rights reserved.