0

スーパークラスがあり、などEntityのサブクラスがあります。PostComment

Entityサブクラスのキャスト リストを返すジェネリック メソッドを追加したいと考えています。たとえば、これを次のように呼び出します。

List<Post> posts = Post.findAll();

私はこれを試しました:

public class Entity {
    public static List<?> findAll() {
        return ???;
    }
}

しかし、私がこれを行うとき、構文は私が求めているものではないと思います:

for(Post post : Post.findAll()) {

}

エラーが発生しますType mismatch

4

2 に答える 2

3
public class Entity<T> {
    public List<T> findAll() {
        return ???;
    }
}

public class Post extends Entity<Post> {
于 2012-12-20T13:03:51.857 に答える
1

ジェネリック クラスではなくジェネリック メソッドが必要な場合は、次のような方法を試してください。

public class Entity {
    static <T extends Entity> List<T> findAll(Class<T> type){
        List<T> list = new ArrayList<T>();

        //populate your list  

        return list;
    }
}

次のように使用できます。
List<Post> list = Entity.findAll(Post.class);

于 2012-12-20T13:42:18.043 に答える