私は一般的な抽象テンプレートクラスを持っています。私は型固有のプロデューサを作成すると、ジェネリッククラスに直接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;
と入力すると、完全に機能します。あなたは
@Inject MyDao<Customer> dao;
を要求する場合でも、ジェネリック医薬品と...
あなたの 'DaoFactory'はどのように実装されていますか? –
"does not work"を定義してください。また、 '@Inject MyDao dao;はどのように一般的ではありませんか? –
動作しません。手段は例外をスローします。もちろん、MyDaoはある程度一般的です。それでも抽象メソッドに完全な汎用doaを注入したいと思います。カスタマイズされたものではありません。 –
membersound