Chcę zarządzać ArrayList klas.ArrayList klas: ArrayList <Class>, ale jak zmusić te klasy do rozszerzenia klasy super?
Na przykład mam 3 rodzaje filtrów: TextFilter
, DurationFilter
i TimeFilter
, które rozszerzają Filter
.
To wydaje się być poprawne:
List<Class> filters = new ArrayList<Class>();
filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
Ale teraz chcę powstrzymać typu ArrayList z
List<Filter.class> filters = new ArrayList<Filter.class>();
filters.add(TextFilter.class);
filters.add(DurationFilter.class);
filters.add(TimeFilter.class);
Ale wydaje się, że nie jest prawidłowe. Czy możesz mi wytłumaczyć dlaczego? Czy masz rozwiązanie, które pozwala tylko akceptować klasy potomne Filter, które mają być dodane w mojej tablicy ArrayList? Dzięki.
Więc chcesz, aby przyjmować tylko wartości, które pochodzą z oceny '' X' X.class' gdy jest klasa rozszerzająca "Filtr". Uważam, że jest to niewyrażalne w systemie typu Java. –