[英]ArrayList of classes : ArrayList<Class> but how to force those classes to extend some super class?
我想管理類的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中加入嗎? 謝謝。
用一個 ? 在泛型。
List<Class<? extends Filter>> filters = new ArrayList<Class<? extends Filter>>();
因為你想要類對象而不是實例。
你應該能說List<Class<? extends Filter>>
List<Class<? extends Filter>>
試試吧
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.