0

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();が、別の方法で学びたいです。

4

2 に答える 2

2

抽象的で汎用的なBaseDAOから派生した、タイプ固有の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 に答える