我有三个类定义如下。
class A {
}
class B extends A{
}
class C extends A{
}
class D{
//Inject class A
}
我在D类注入A类.CDI正在抛出不明确的解决方案异常。解决这个问题的正确方法是什么?感谢您的帮助。
答案 0 :(得分:6)
@Typed
注释启用restricting bean types,以便您可以写:
class A {
}
@Typed(B.class)
class B extends A {
}
@Typed(C.class)
class C extends A {
}
class D {
//Inject class A
}
在您的部署中,bean类B
的{{3}}(分别为C
)将被限制为B
和Object
(resp。{{ 1}}和C
)这样只有一个bean的bean类型包含类型Object
,并且将解析模糊的解析。
请注意,自CDI 1.0以来A
注释可用。
答案 1 :(得分:2)
您可以使用限定符,因此您的代码如下所示:
@ClazzA
class A {
}
@ClazzB
class B extends A{
}
@ClassC
class C extends A{
}
当你尝试注射时,你会做这样的事情:
@Inject @ClassA
A a;
检查Weld Doc