处理依赖的Java库添加新类?

时间:2019-01-22 19:50:34

标签: java oop classpath

我的应用程序具有以下架构:

我在图书馆中有不同数量的类来实现特定的接口。 (这些类都实现完全相同的接口)。

所有这些都由方法实例化,放置在列表中,并发送给以某种方式处理它们的函数。

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);
    }

}

上述类(ClassAClassB等)是从库中加载的。

现在,尽管这有效,但它却令人难以置信,而且每次在库中创建实现ClassInterface的新类时,都需要重新编译上述程序(即使什么都没有真正改变)。

是否有更好的方法来解决此类问题?还是我缺少明显的东西?

2 个答案:

答案 0 :(得分:2)

您可以使用Reflections库从类路径中扫描实现ClassInterface的所有类。

Reflections reflections = new Reflections("my.package");
Set<Class<? extends SomeType>> subTypes = reflections.getSubTypesOf(ClassInterface.class);

答案 1 :(得分:0)

考虑使用java.util.ServiceLoaderAutoService的组合,因此您只需编写ServiceLoader.load(ClassInterface.class)并获得Iterable<ClassInterface>