我有一个PropertyBag
类,模拟对象可以使用的属性集合。
我还有几个类A1,A2,...,AN
,它们具有以下形式的构造函数:
public A...(PropertyBag);
所有这些类都实现了接口iA
。
我使用反射来创建相关的A...
对象,并传入一个PropertyBag
。我从PropertyBag
对象中提取数据,以获取类的候选成员数据。
然而,我想在编译时强制要求A...
类的实现者实现上述形式的构造函数。我知道我的请求很奇怪:为什么要标准化构造参数呢?但我在这里有一个理由。
当然,我可以将构造和初始化步骤分开,因为我可以将初始化函数标记为抽象的,甚至可以改变iA
为包含该抽象初始化函数定义的抽象类。我将使用反射调用初始化函数。如果任何A...
遗漏了该初始化函数,那么这将给我所需的编译时故障。但是,我不喜欢将构造和初始化分开,因为已构造但未初始化的对象没有意义。
我错过了什么技巧吗?(在C++中,我可以使用模板在编译时强制执行,但在Java中看不到这样的方法)。