从java中的类对象构造类实例

时间:2011-10-17 23:37:09

标签: java class

我需要从类对象数组中创建一个类的新实例,如下所示:

static Class[] spells = {Fireball.class, Iceball.class};

因此,当我想要召唤火球时,我应该可以做一些像

这样的事情
Spell Currentspell = new spells[0](posx, posy);

Fireball和Iceball就像是Spell的子类。

我该怎么做?

谢谢。

4 个答案:

答案 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();