簡體   English   中英

ArrayList類:ArrayList <Class> 但是如何強制這些類擴展一些超類呢?

[英]ArrayList of classes : ArrayList<Class> but how to force those classes to extend some super class?

我想管理類的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中加入嗎? 謝謝。

用一個 ? 在泛型。

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

因為你想要類對象而不是實例。

你應該能說List<Class<? extends Filter>> List<Class<? extends Filter>>

請參閱Upper Bounded Wildcards

試試吧

 List<Class<? extends Filter>>

類支持Type參數,並帶? extends Filter指定Filter的每個子類

我對Generics並不感到震驚,但我相信語法是如此

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM