¿Manejar una biblioteca Java dependiente agregando nuevas clases?

Mi aplicación tiene la siguiente arquitectura:

Tengo una cantidad variable de clases que implementan una interfaz específica en una biblioteca. (Todas estas clases implementan exactamente la misma interfaz).

Todos estos se instancian por un método, se colocan en una lista y se envían a alguna función que los procesa de alguna manera.

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

}

Las clases anteriores ( ClassA, ClassB, etc ..) se cargan desde una biblioteca.

Ahora, mientras esto funciona, es increíblemente desordenado y cada vez que ClassInterfacese crea una nueva implementación de clase en la biblioteca, requiere recompilar el programa anterior (aunque nada ha cambiado realmente).

¿Existe un mejor enfoque para este tipo de problema? ¿O me estoy perdiendo algo obvio?

Respuesta 1

Puede usar la biblioteca Reflections para escanear todas las clases que se implementan ClassInterfacedesde la ruta de clase.

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

Estoy buscando un selector de fecha Swing de Java que específicamente le permita navegar por la vista del calendario usando el teclado. Solo he encontrado JXDatePicker de SwingX, 'DatePicker' y un par más que ...

Encontré un código para calcular el nivel de sonido del micrófono (RMS): public int CalculateRMSLevel (byte [] audioData) {// audioData podría ser datos almacenados en una línea de datos larga lSum = 0; ...

Estoy usando las API de Nashorn para ejecutar Javascripts usando código Java. Nashorn está en desuso terminalmente en JDK 11. Actualmente estoy en JDK 8 donde algunas de las API están en desuso. ¿Es posible rastrear ...

¿Cómo puedo obtener los detalles de un proceso en Linux? Quiero el tiempo total de ejecución, el mapa de memoria de un proceso. En este contexto, el proceso será un simple programa Java. Solo sé el nombre del archivo, no el ...