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希望有一个类列表,而不是实例列表。