类的ArrayList:ArrayList <class>但是如何强制这些类扩展一些超类?</class>

时间:2013-05-07 13:06:35

标签: java

我想管理类的ArrayList。

例如,我有3种类型的过滤器:TextFilterDurationFilterTimeFilter扩展Filter

这似乎是正确的:

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

filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);

但是现在我想用

来约束ArrayList类型
List<Filter.class> filters = new ArrayList<Filter.class>();

filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);

但它似乎不正确。你能解释一下原因吗?你有一个解决方案只接受Filter子类在我的ArrayList中加入吗?感谢。

4 个答案:

答案 0 :(得分:17)

使用?在泛型。

List<Class<? extends Filter>> filters = new ArrayList<Class<? extends Filter>>();

因为你想要类对象而不是实例。

答案 1 :(得分:3)

您应该可以说List<Class<? extends Filter>>

请参阅Upper Bounded Wildcards

答案 2 :(得分:1)

尝试

 List<Class<? extends Filter>>

Class支持Type参数,并带有? extends Filter指定Filter的每个子类

答案 3 :(得分:0)

我对Generics并不是很好,但我相信语法是按照

的方式进行的
List<? extends Filter> filters = new ArrayList<? extends Filter>();