从类名创建列表或按列表转换

时间:2012-12-10 18:04:24

标签: java list generics

我有通用类,我想创建一个List或由List投射。我只有班级类型。我想得到的是:

public class CustomerDao extends BaseDao<Customer> implements ICustomerDao {

    private Class<Customer> entityClass;

    public CustomerDao(Class<Customer> entityClass) {
        super(entityClass);
        this.entityClass = entityClass;
    }

    public void getCustomers() {
        List<***> list = (List<***>)getSessionFactory().getCurrentSession().createCriteria(entityClass).list();
    }
}

现在我如何使用字段entityClass创建List<***> list?有可能吗?

我可以使用List<Customer> list = getSessionFactory().getCurrentSession().createCriteria(entityClass).list();,但我想学习不同的方式。

2 个答案:

答案 0 :(得分:2)

似乎您正在尝试为抽象的通用Base DAO实现特定于类型的DAO(针对您的Customer实体)。如果确实这就是你想要完成的事情那么根本不需要泛型:

public class CustomerDao extends BaseDao<Customer> implements ICustomerDao {

    public CustomerDao() {
        super(Customer.class);
    }

    public List<Customer> getCustomers() {
        final List<Customer> list = (List<Customer>) getSessionFactory().
            getCurrentSession()
           .createCriteria(Customer.class).list();
    }
}

自从我使用Hibernate API以来已经有一段时间了,但我认为你不需要对List<Customer>进行类型转换。

答案 1 :(得分:1)

那将毫无意义。
泛型只存在于编译时。

相反,你应该让整个班级变得通用。