根据变量创建类的实例

时间:2019-03-07 13:46:26

标签: java

我目前正在一个项目中,用Java为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语句的情况。

非常感谢您提前提供帮助

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

假设每个LevelN类只有一个对象,那么最简单的操作就是将它们存储到数组中

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

然后有一些辅助方法来检索它们

GameLevel getNextLevel(int currentLevel) {
    return levels[currentLevel];
}