我有一个超类Entity
,还有像Post
,Comment
等子类。
我想向Entity
添加一个泛型方法,该方法将返回子类中的强制转换列表。例如,我想称之为:
List<Post> posts = Post.findAll();
我试过这个:
public class Entity {
public static List<?> findAll() {
return ???;
}
}
但我认为语法不是我想要的,因为当我这样做时:
for(Post post : Post.findAll()) {
}
它提供错误Type mismatch
。
答案 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);