[英]How to pass enum as generic parameter
我正在基於通過CDI注入的DAO為REST服務實現基本的CRUD。 它可以使用多次注入,我想從擴展GenericRest
類中傳遞DAO類型。 我遵循了本教程。
並獲取可行的代碼:
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.