反射會讓你到某個地方...我不知道它是否是首選方法。
你可以做這樣的事情。有充分的怪物類型實現一個接口,這樣的事情:
public interface Monster {
public boolean canBeCreated ();
}
然後你可以有一個怪物的創造者,是這樣的:
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class MonsterCreator {
private Monster[] monsterTypes;
public MonsterCreator () {
monsterTypes = new Monster[2];
monsterTypes[0] = new Zombie ();
monsterTypes[0] = new Skeleton ();
}
public void tick () {
for (Monster m : monsterTypes) {
if (m.canBeCreated ()) {
try {
Constructor<?>[] constr = m.getClass ()
.getConstructors ();
Monster toAdd = (Monster) constr[0].newInstance ();
MonsterContainer.add (toAdd);
} catch (InstantiationException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace ();
}
}
}
}
}
這是值得一試... :)
當然,怪物類型的東西可以用類似於鏈接到類類型的枚舉常量的地圖來完成......再次,這僅僅是爲了示例。只是想在問題結束之前發佈這篇文章!
對我來說不是很清楚。你可以請更清楚地描述你想要什麼 – stinepike
你需要的可能是反射,雖然你的問題有點模糊...... – NilsH
@NilsH我增加了更多細節 – ExotickBoyPl