簡體   English   中英

如何將枚舉作為通用參數傳遞

[英]How to pass enum as generic parameter

我正在基於通過CDI注入的DAO為REST服務實現基本的CRUD。 它可以使用多次注入,我想從擴展GenericRest類中傳遞DAO類型。 我遵循了本教程。

http://www.javacodegeeks.com/2013/06/java-ee-cdi-programmatic-dependency-disambiguation-example-injection-point-inspection.html

並獲取可行的代碼:

GenericREST.java

public abstract class GenericREST {
    @Inject
    @DAOProducer
    @DAOType(DAO.COMMENT)
    private GenericDAO dao;
    ...
}

GenericDAO.java

public interface GenericDAO<T, PK extends Serializable> {
    public T create(T t);
    public T read(final PK id);
    public T update(T t);
    public void delete(final PK id);
}

如上所述,當我設置@DAOType時,它可以很好地工作。 但是我想通過擴展類的DAO類型來選擇DAO。

有什么辦法嗎? 還是有更簡單的方法?

假設您使用CDI實例,則可以執行以下操作:

@Inject
@DAOProducer
private Instance<GenericDAO<?,?>> genericDaoInst;

protected GenericDAO<?,?> getDao(DAO dao) {
    return genericDaoInst.select(new DAOTypeLiteral(dao)).get();
}

然后在代碼中的某處...

GenericDAO<?,?> dao = getDao(DAO.COMMENT);

暫無
暫無

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

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