gpt4 book ai didi

java - Java中的参数化类

转载 作者:行者123 更新时间:2023-12-02 04:22:05 25 4
gpt4 key购买 nike

我在这个 Java 类中做错了什么? clazz 字段始终为空。 clazz 不应该自动填充具体类上定义的类型吗?

谢谢!

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
}

最佳答案

不,Java 中没有任何内容会自动填充 Class<T>泛型类中的字段。如果您的泛型类需要知道类型参数之一的类型,则必须添加 Class<T> 类型的构造函数参数。并从那里初始化它。例如,参见类 EnumMap在 JDK 中。

关于java - Java中的参数化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com