Java 如何将枚举作为泛型参数传递
我正在基于通过CDI注入的DAO实现基本的CRUDforREST服务。 它将与多个注入一起工作,我想从扩展Java 如何将枚举作为泛型参数传递,java,generics,parameters,enums,cdi,Java,Generics,Parameters,Enums,Cdi,我正在基于通过CDI注入的DAO实现基本的CRUDforREST服务。 它将与多个注入一起工作,我想从扩展GenericRest的类中传递DAO的类型。 我遵循了这个教程 并获得可行的代码: GenericREST.java public abstract class GenericREST { @Inject @DAOProducer @DAOType(DAO.COMMENT) private GenericDAO dao; ... } Generi
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);
}
公共接口GenericDAO{
公共T创建(T T);
公共T读(最终PK id);
公共T更新(T);
公共作废删除(最终主键id);
}
当我如上所述设置@DAOType时,它工作得很好。
但是我想通过从扩展类传递它的类型来选择DAO
有什么办法吗?或者有更简单的方法?假设您使用CDI实例,您可以这样做:
@Inject
@DAOProducer
private Instance<GenericDAO<?,?>> genericDaoInst;
protected GenericDAO<?,?> getDao(DAO dao) {
return genericDaoInst.select(new DAOTypeLiteral(dao)).get();
}
@Inject
@稻草人
私有实例getDao(DAO-DAO){
返回genericDaoInst.select(new daotypeterical(dao)).get();
}
然后在代码的某个地方
GenericDAO<?,?> dao = getDao(DAO.COMMENT);
GenericDAO=getDao(dao.COMMENT);
我很难理解您的设置。。。您能为具体的GenericDao和GenericREST实现添加一些代码吗?什么是DAO.COMMENT?谁使用不同的REST Bean?很抱歉,我之前没有回答你。谢谢,这正是我要找的。