java - 处理依赖 Java 库添加新类吗?

标签 java oop classpath

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

我在库中拥有不同数量的实现特定接口(interface)的类。 (这些类都实现完全相同的接口(interface))。

这些都由一个方法实例化,放置在一个列表中,然后发送到某个以某种方式处理它们的函数。

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 的新类时,都需要重新编译上述程序(即使没有真正改变任何内容)。

有没有更好的方法来解决此类问题?或者我错过了一些明显的东西?

最佳答案

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

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

关于java - 处理依赖 Java 库添加新类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54315481/

相关文章:

java - IntelliJ 测试失败,Gradle 测试正常 : does not recognize JSON files in 'test/resources'

java - (Java) 尝试使用 getResourceAsStream() 从 JAR 文件加载剪辑,但仅适用于我的 IDE

apache httpd 启动时出现 Java 问题

java - hibernate : MySQLSyntaxErrorException: Unknown column ' ____ ' in 'field list'

php - 如何使用 __autoload 从多个目录加载类?

java - 有什么方法可以更改类路径中的属性文件吗?

java - 哪种 OOP 方法适合周期表属性?

matlab - 如何在 MATLAB 2013b 中创建自定义 setter 方法?

javascript - 将其迁移到 Javascript OOP 时出现 TypeError : g. j 未定义(Google map )

Clojure 的 :require and Instaparse