1
我有以下情形:多级继承泛型和春季刊 - Java的
的POJO:
abstract class A
abstract class B1 extends A
class C1 extends B1
abstract class B2 extends A
class C2 extends B2
引擎:
抽象类EngineA {
private EngineA a;
public EngineA(A a){
this.a =a;
}
}
抽象类EngineB1扩展EngineA私有引擎B1b1;
public EngineB1(B1 b1){
super(b1);
this.b1 =b1;
}
class EngineC1 extends EngineB1<C1> // similar constructor
abstract class EngineB2<B2> extends EngineA<B2> // similar constructor
class EngineC2 extends EngineB2<C2> // similar constructor
所有POJO和发动机是组件与范围原型
我所做的这一切才能实现:
EngineA engineA = context.getBean(EngineA.class, /*either C1 or C2 object */)
在主
()。
如果对象是C1我希望它被EngineC1和C2用于EngineC2 这样,如果在将来添加任何类,我不必更改主要方法。我也不想检查instanceof或使用Qualifier,因为最终它会导致主类的代码更改(我猜)。 但我得到这个错误:
没有可用的'EngineA'类型的可用bean:期望的单个匹配的bean,但找到2:c1,c2。
首先是否有可能实现我想要做的事情?
仿制药是否正确书写?
可能的解决方案之一是使用反射来构建自己的EngineFactory。但是还有其他解决方案吗?
在这种情况下该类锝将有当新的POJO和引擎被加入其中,我不想被更新。无论如何感谢您的努力:) –
使用Tc类只是为了分组。没有什么与逻辑有关。尝试将每个文件分成不同的文件,你会发现它也会起作用。所以以后可以自由添加任何类。 – hsnkhrmn