Dlaczego nie można wstrzykiwać klas ogólnych? [Zamknięte]

Mam ogólną klasę abstrakcyjnego szablonu. Pomyślałem, że jeśli utworzę producentów specyficznych dla typu, mogę wstrzyknąć pewną usługę DAO bezpośrednio do klasy ogólnej. Ale nie mogę.

Czemu? A jak mogę to obejść?

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);
    }
}

Kiedy wstrzykuję np. A@Inject MyDao<Customer> dao; działa doskonale. Ale nie z generykami ...

questionAnswers(1)

yourAnswerToTheQuestion