Java 类的ArrayList:ArrayList<;类别>;但是如何强制这些类扩展一些超类呢?

Java 类的ArrayList:ArrayList<;类别>;但是如何强制这些类扩展一些超类呢?,java,Java,我想管理一个类的数组列表 例如,我有三种类型的过滤器:TextFilter、DurationFilter和TimeFilter,它们扩展了Filter 这似乎是正确的: List<Class> filters = new ArrayList<Class>(); filters.add(TextFilter.class); filters.add(DurationFilter.class); filters.add(TimeFilter.class); List fil

我想管理一个类的数组列表

例如,我有三种类型的过滤器:
TextFilter
DurationFilter
TimeFilter
,它们扩展了
Filter

这似乎是正确的:

List<Class> filters = new ArrayList<Class>();

filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
List filters=new ArrayList();
filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
但是现在我想用

List<Filter.class> filters = new ArrayList<Filter.class>();

filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
List filters=new ArrayList();
filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);

但这似乎是不正确的。你能解释一下原因吗?您是否有只接受要添加到我的ArrayList中的筛选器子类的解决方案?谢谢。

我对泛型不太在行,但我相信语法与

List<? extends Filter> filters = new ArrayList<? extends Filter>();
列表使用?在泛型中

List<Class<? extends Filter>> filters = new ArrayList<Class<? extends Filter>>();
List尝试使用

 List<Class<? extends Filter>>

List您应该可以说
List,所以,当
X
是一个扩展
过滤器的类时,您只希望接受来自计算
X.class
的值。我相信这在Java的类型系统中是无法表达的。您是否尝试过在这样的列表中添加一个项目。我认为不允许添加项目。这会将列表限制为
Filter
类型的实例,但OP希望有一个类列表,而不是实例列表。