Java 如何将枚举作为泛型参数传递

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

我正在基于通过CDI注入的DAO实现基本的CRUDforREST服务。 它将与多个注入一起工作,我想从扩展
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?很抱歉,我之前没有回答你。谢谢,这正是我要找的。