Java反射:获取内部类的构造函数失败

时间:2016-05-21 22:08:15

标签: java reflection

我有一个名为GlowZombie的类,它有两个结构符:

public class GlowZombie extends GlowMonster implements Zombie {

    public GlowZombie(Location loc) {
        this(loc, EntityType.ZOMBIE);
    }

    public GlowZombie(Location loc, EntityType type) {
        super(loc, type, 20);
    }

该类有一个内部类GlowHusk,具有相同的构造函数参数:

    public class GlowHusk extends GlowZombie implements Zombie.Husk {

        public GlowHusk(Location loc) {
            this(loc, EntityType.HUSK);
        }

        public GlowHusk(Location loc, EntityType type) {
            super(loc, type);
        }
    }
}

然后,我需要使用反射来获取GlowHusk(Location)构造函数,如:

Constructor<T> constructor = (Constructor<T>) GlowZombie.GlowHusk.class.getConstructor(Location.class);

...哪个抛出异常:

java.lang.NoSuchMethodException: net.glowstone.entity.monster.GlowZombie$GlowHusk.<init>(org.bukkit.Location)

注意

使用GlowZombie代替GlowHusk正确执行:

Constructor<T> constructor = (Constructor<T>) GlowZombie.class.getConstructor(Location.class);

并没有抛出异常。

问题:为什么getConstructor()在这种情况下不起作用?是因为它是一个内部类,因此需要一些其他方式来访问它的构造函数吗?

0 个答案:

没有答案