我的应用程序具有以下架构:
我在图书馆中有不同数量的类来实现特定的接口。 (这些类都实现完全相同的接口)。
这些都由方法实例化,放置在列表中,然后发送给以某种方式处理它们的某个函数。
public class Initialize {
public static void main(String[] args){
ClassInterface num1 = new ClassA();
ClassInterface num2 = new ClassB();
...
ClassInterface numX = new ClassX();
List<ClassInterface> list = new ArrayList<ClassInterface>();
list.add(num1, num2, num3.....);
processList(list);
}
}
上面的类(
ClassA
,ClassB
等)是从库中加载的。现在,尽管这有效,但它却令人难以置信,而且每次在库中创建实现
ClassInterface
的新类时,都需要重新编译上述程序(即使实际上没有任何更改)。有没有更好的方法来解决此类问题?还是我缺少明显的东西?
最佳答案
您可以使用Reflections库从类路径中扫描实现ClassInterface
的所有类。
Reflections reflections = new Reflections("my.package");
Set<Class<? extends SomeType>> subTypes = reflections.getSubTypesOf(ClassInterface.class);