我正在研究Java的反射技术。我有一个抽象类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
有什么办法可以用基类的构造函数实例化派生类?或者说必须声明那些愚蠢的代理构造函数吗?