簡體   English   中英

Java中的參數化類

[英]Parameterized class in Java

在這個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>類型的構造函數參數,然后從那里對其進行初始化。 例如,請參見JDK中的EnumMap類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM