我有一个名为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()
在这种情况下不起作用?是因为它是一个内部类,因此需要一些其他方式来访问它的构造函数吗?