6

我想管理一个类的 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);

但似乎不正确。你能解释一下为什么吗?你有一个解决方案只接受过滤子类添加到我的 ArrayList 中吗?谢谢。

4

4 回答 4

17

用一个 ?在泛型中。

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

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

于 2013-05-07T13:11:21.713 回答
3

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

请参阅上限通配符

于 2013-05-07T13:13:17.017 回答
1

尝试

 List<Class<? extends Filter>>

类支持 Type 参数,并带有 ? 扩展过滤器,您指定过滤器的每个子类

于 2013-05-07T13:12:24.237 回答
0

我对泛型不是很感冒,但我相信语法是这样的

List<? extends Filter> filters = new ArrayList<? extends Filter>();
于 2013-05-07T13:11:05.183 回答