最有效/最安全的方法来创建随机类的新实例

时间:2013-05-26 01:15:55

标签: java

我正在写一个2D游戏,当地图滚动时,我会随机生成生物。但是,我需要随机选择一个生物类型 - 这意味着我需要从列表中随机选择一个类并创建它的新实例。

我的实体类目前采用构造函数参数(对游戏的引用),但如果它使这个过程更容易,就可以移动它。

我原本打算使用枚举来定义实体类型以及“处理程序类”,但此时枚举系统对我来说效果不佳,因为对于不同实体的不同属性有太多逻辑。

2 个答案:

答案 0 :(得分:2)

为你的怪物创建一个枚举,并使用Math.random()选择一个:

public enum Monster {
    AcidBlob,
    Orc,
    Etc
}

Monster m = Monsters.values[Math.random() * Monsters.values().length];

您可以像常规课一样为枚举添加方法和字段。

答案 1 :(得分:0)

如果您愿意,可以使用类名列表,并使用Class.forName(className).newInstance()创建实例。您不需要将结果强制转换为实际的类名,只需将所有怪物的常用超类强制转换为。

String randomMonsterName = listOfMonsterNames[randomIndex];
Monster newMonster = (Monster) (Class.forName(randomMonsterName).newInstance());

当然,它确实要求您的怪物只能使用默认构造函数构建。 (你可以这样做,但它变得更加混乱。)