我正在研究 Java 的 Reflection。我有一个抽象类Base
与构造函数。
abstract class Base {
public Base( String foo ) {
// do some magic
}
}
我还有一些进一步的课程延伸Base
。它们不包含太多逻辑。我想实例化它们Base
的构造函数,而不必在那些派生类中编写一些代理构造函数。当然,我想用反射实例化那些派生类。说:
Class cls = SomeDerivedClass.class;
Constructor constr;
constr = cls.getConstructor( new Class[] { String.class } ); // will return null
Class clsBase = Base.class;
constr = clsBase.getConstructor( new Class[] { String.class } ); // ok
Base obj = (Base) constr.newInstance( new Object[] { "foo" } ); // will throw InstantiationException because it belongs to an abstract class
有什么想法,如何使用 Base 的构造函数实例化派生类?或者must我声明那些愚蠢的代理构造函数?
类不会从其父类继承构造函数。类没有其父构造函数(尽管它可以调用它们),因此您必须调用该类具有的构造函数,而不是超类具有的构造函数。
默认构造函数似乎只是执行此操作,因为它默认调用父级的默认构造函数。如果父级没有默认构造函数,则其直接子级也没有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)