Что я делаю неправильно в этом классе Java? Поле clazz всегда равно null. Не следует ли автоматически заполнять clazz типом, определенным на конкретном классе?Параметрированный класс в Java
Спасибо!
public abstract class AbstractDAO<E extends Domain, T extends Number> {
protected EntityManager em;
private Class<E> clazz;
public AbstractDAO(final EntityManager em) {
this.em = em;
}
public E find(T id) {
return em.find(clazz, id);
}
public List<E> findAll() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<E> cq = cb.createQuery(clazz);
Root<E> from = cq.from(clazz);
CriteriaQuery<E> select = cq.select(from);
return em.createQuery(select).getResultList();
}
// other methods
}
Вы должны задать этот вопрос: http://stackoverflow.com/questions/18707582/get-actual-type-of-generic-type-argument-on-abstract-superclass/ – BalusC
Упс. Прости. Спасибо, кстати. –
было бы неплохо :) или если мы могли бы сделать «E.class» ... к сожалению, мы не можем сделать это в java. – ZhongYu