Мое приложение имеет следующую архитектуру:
У меня есть переменное количество классов, реализующих определенный интерфейс в библиотеке. (Все эти классы реализуют один и тот же интерфейс).
Все они создаются методом, помещаются в список и отправляются некоторой функции, которая каким-то образом их обрабатывает.
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, требуется перекомпилировать вышеуказанную программу (хотя на самом деле ничего не изменилось).
Есть ли лучший подход к такой проблеме? Или я упускаю что-то очевидное?




Вы можете использовать библиотеку Размышления для сканирования всех классов, реализующих ClassInterface, из пути к классам.
Reflections reflections = new Reflections("my.package");
Set<Class<? extends SomeType>> subTypes = reflections.getSubTypesOf(ClassInterface.class);