我需要从类对象数组中创建一个类的新实例,如下所示:
static Class[] spells = {Fireball.class, Iceball.class};
因此,当我想要召唤火球时,我应该可以做一些像
这样的事情Spell Currentspell = new spells[0](posx, posy);
Fireball和Iceball就像是Spell的子类。
我该怎么做?
谢谢。
答案 0 :(得分:11)
Constructor constructor = spells[0].getConstructor(int.class, int.class);
Spell Currentspell = (Spell)constructor.newInstance(posx, posy);
答案 1 :(得分:1)
您需要通过反射调用类的相应构造函数。
请参阅http://java.sun.com/developer/technicalArticles/ALT/Reflection/
上的“创建新对象”部分答案 2 :(得分:0)
使用getConstructor()
方法获取所需的特定构造函数,然后在构造函数对象上调用newInstance()
。
答案 3 :(得分:0)
嗯,首先,您需要缩小可以存储在数组中的类的类型。其次,您的实例化代码已关闭。这不是最好的方法,这是一些(更好的)代码:
static Class<Spell>[] spells = new Class<Spell>[] { Fireball.class, Iceball.class };
Spell currentSpell = spells[someIndex].newInstance();