我想管理类的ArrayList。
例如,我有3种类型的过滤器:TextFilter
,DurationFilter
和TimeFilter
扩展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中加入吗?感谢。
答案 0 :(得分:17)
使用?在泛型。
List<Class<? extends Filter>> filters = new ArrayList<Class<? extends Filter>>();
因为你想要类对象而不是实例。
答案 1 :(得分:3)
您应该可以说List<Class<? extends Filter>>
答案 2 :(得分:1)
尝试
List<Class<? extends Filter>>
Class支持Type参数,并带有? extends Filter指定Filter的每个子类
答案 3 :(得分:0)
我对Generics并不是很好,但我相信语法是按照
的方式进行的List<? extends Filter> filters = new ArrayList<? extends Filter>();