Używam pakietu reflections, aby uzyskać zestaw klas, które implementują określony interfejs. Ten zestaw będzie używany jako lista możliwych opcji wiersza poleceń. Moim problemem jest to, że chcę tylko, aby zajęcia chwilowe, ale teraz dostać zarówno chwilowe i nie chwilowe klas (np klasy abstrakcyjne) z następującego kodu:Jak uzyskać tylko natychmiastowe klasy z odbiciami
Map<String, Class<? extends InterfaceOptimizer>> optimizerList = new HashMap<String, Class<? extends InterfaceOptimizer>>();
Reflections reflections = new Reflections("eva2.optimization.strategies");
Set<Class<? extends InterfaceOptimizer>> optimizers = reflections.getSubTypesOf(InterfaceOptimizer.class);
for(Class<? extends InterfaceOptimizer> optimizer : optimizers) {
optimizerList.put(optimizer.getName(), optimizer);
}
Czy istnieje sposób, aby filtrować zestaw zwrócony przez getSubTypesOf
, aby odfiltrować klasy abstrakcyjne?
Zobacz http://stackoverflow.com/questions/1072890/how-can-i-determine-whether-a-java-class-is-abstract-by-reflection – rusmus
@rusmus, specjalnie poprosiłem o brak możliwości klasy i klasy abstrakcyjne są tylko jednym z przykładów. Oczywiście pytanie, które łączysz, całkiem dobrze opisuje klasy abstrakcyjne, ale nie wiedziałem, jak sprawdzić interfejsy. – halfdan