我有一个PropertyBag
类,它为对象可消耗的一组属性建模。
我还有几个A1, A2, ..., AN
具有以下构造函数的类
public A...(PropertyBag);
所有这些类都实现了接口 iA
。
我使用反射来创建相关的A...
传递PropertyBag
。我从对象中提取数据PropertyBag
以产生类的候选成员数据。
我想要做的是A...
在编译时强制类的实现者实现上述形式的构造函数。我知道我的要求很奇怪:为什么要标准化构造参数?但我在这里有一个案例。
当然,我可以做的是有一个单独的构造和初始化步骤,因为我可以将初始化函数标记为抽象,甚至可以更改iA
为包含该抽象初始化函数定义的抽象类。我会使用反射来调用初始化。A...
如果缺少该初始化函数,那将给我我希望的编译时失败。但是我不喜欢将构造和初始化分开的想法,因为构造但未初始化的对象没有意义。
我在这里错过了一个技巧吗?(在 C++ 中,我可以在编译时使用模板强制执行,但在 Java 中看不到方法)。