【发布时间】:2017-10-27 23:35:16
【问题描述】:
我现在正面临一个非常令人困惑的问题。
我正在开发程序库的扩展。在该库中,有多个类A、B、C和D,它们都继承自同一个超类Base。
现在,我正在为每个类进行单独的扩展,A1、B1、C1 和 D1,它们都继承自 A、B、C 和 D分别。除此之外,它们都实现了一个自定义接口I1,我自己也添加了。
基类(以及所有子类,包括我的)的构造函数接受一个 E 类型的参数。
为了以简单的方式实例化这些类,我正在尝试编写一个处理程序类,以便在需要时创建一个实例。它应该像这样工作:
public class Handler
{
private Base ctype;
public Handler(Class<T extends Base implements I1> ctype)
{
this.ctype = new ctype.class(E.instance);
}
}
现在,当然它不会那样工作,但我确信我明白了这个想法。
到目前为止,我的扩展程序有一个工作版本,虽然非常草率,因为我不是处理程序类,而是手动检查每种类型并实例化正确的对象。由于将来我将不得不修改更多类,因此我想不惜一切代价避免这种情况,以避免文件混乱。
我知道 ctype.newInstance() 方法,但是由于 Base 类在其构造函数中需要一个参数,恐怕它不会工作。 (除非我遗漏了什么,在这种情况下请指点我!)
感谢您的帮助!
【问题讨论】:
标签: java inheritance types