返回转换子类

时间:2012-12-20 13:01:25

标签: java inheritance

我有一个超类Entity,还有像PostComment等子类。

我想向Entity添加一个泛型方法,该方法将返回子类中的强制转换列表。例如,我想称之为:

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

我试过这个:

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

但我认为语法不是我想要的,因为当我这样做时:

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

}

它提供错误Type mismatch

2 个答案:

答案 0 :(得分:3)

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

public class Post extends Entity<Post> {

答案 1 :(得分: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);