0

我有通用类,我想创建一个Listor cast by 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();,但我想学习不同的方式。

4

2 回答 2

2

似乎您正在尝试实现一个特定于类型的 DAO(对于您的客户实体),该 DAO 派生自抽象的通用 Base DAO。如果这确实是您想要完成的,那么根本不需要泛型:

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>也不需要类型转换。

于 2012-12-10T18:27:23.260 回答
1

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

相反,您应该使整个类通用。

于 2012-12-10T18:06:31.270 回答