0

私はスーパークラスを持っています.DBのテーブルからすべてのレコードを選択するDBAdapterメソッドがあります. このクラスを で継承しています。このクラスは から拡張されたクラスを認識しています。fetchAll()List<DBObject>CategoryDBAdapterCategoryDBObject

私が電話するとき:

CategoryDBAdapter categoryDbAdapter = new CategoryDBAdapter(dbHelper);

List<Category> categories = categoryDbAdapter.fetchAll();

私のコードはにキャストできませList<DBObject>List<Category>。この衝突を解決するために一般的に使用される方法は何ですか?

4

2 に答える 2

2

DBAdapter および DBCategoryAdapter クラスをジェネリックを使用するように変更できます。

class DBAdapter<T extends DBObject> {
    List<T> fetchAll() {
        ...
    }
}

class DBCategoryAdapter extends DBAdapter<Category> {

}

また、fetchAll() メソッドの内容を調整する必要があります。これがどれほど簡単かは、実装によって異なります。

于 2012-12-16T09:11:38.567 に答える
0

直接的な方法はないと思います。Category要素の新しいリストを作成し( )、返された要素List<Category> categoryListのリストを反復し( )、要素をキャストし ( )、新しいリストにカテゴリ要素のリストを追加する( ) 必要があります。DBObjectList<DBObject> dbOjectsListCategory category = (Category) dbObject;categoryList.add(category);

于 2012-12-16T07:59:09.607 に答える