【发布时间】:2013-10-14 14:39:06
【问题描述】:
我有一个通用的抽象模板类。我想如果我创建特定类型的生产者,我可以直接在泛型类中注入一些 DAO 服务。但我做不到。
为什么?我该如何解决这个问题?
abstract class MyView<T> {
@Inject
MyDao<T> dao;
//some more template methods that make use of the dao
void someMethod() {
dao.use();
}
}
class CustomerView extends MyView<Customer> {
//javax.enterprise.inject.AmbiguousResolutionException: Ambigious resolution
}
class DaoManager {
@Produces
MyDao<Customer> getDaoCustomer() {
return DaoFactory.make(Customer.class);
}
@Produces
MyDao<Product> getDaoProduct() {
return DaoFactory.make(Product.class);
}
}
当我注入例如@Inject MyDao<Customer> dao; 时,它可以完美运行。但不是泛型...
【问题讨论】:
-
你的
DaoFactory是如何实现的? -
请定义“不起作用”。还有,
@Inject MyDao<Customer> dao;怎么不通用? -
不工作意味着抛出异常。当然 MyDao
在一定程度上是通用的。我仍然想为抽象方法注入一个完全通用的 doa。不是定制的。 -
Dao 就我而言,因为我使用 Vaadin,有点像:
JPAContainerFactory.make(class) -
您收到什么错误信息?
标签: java jakarta-ee dependency-injection cdi