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

Jul*_*ien 6 java

我想管理类的ArrayList.

举例来说,我有3种类型的过滤器:TextFilter,DurationFilterTimeFilter延伸Filter.

这似乎是正确的:

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

filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
Run Code Online (Sandbox Code Playgroud)

但是现在我想用它来约束ArrayList类型

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

filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
Run Code Online (Sandbox Code Playgroud)

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

Sri*_*ati 17

用一个 ?在泛型.

List<Class<? extends Filter>> filters = new ArrayList<Class<? extends Filter>>();
Run Code Online (Sandbox Code Playgroud)

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