我正在使用reflections包獲取一組實現某個接口的類。該組將用作可能的命令行選項列表。我的問題是,我只是想獲得實例化類,但現在從下面的代碼同時獲得實例化和不可實例化類(比如抽象類):如何獲得僅具有反射的可實例化的類
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);
}
有沒有辦法來過濾返回的集getSubTypesOf
過濾掉抽象類?
請參閱http://stackoverflow.com/questions/1072890/how-can-i-determine-whether-a-java-class-is-abstract-by-reflection – rusmus
@rusmus,我特別要求不可實例化類和抽象類只是其中的一個例子。當然,你鏈接的問題涵蓋了抽象類很好,但我不知道如何檢查接口。 – halfdan