我有通用类,我想创建一个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();
,但我想学习不同的方式。
答案 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)
那将毫无意义。
泛型只存在于编译时。
相反,你应该让整个班级变得通用。