Esto es una continuación de la pregunta publicada en: How to load a jar file at runtime¿Cómo se accede a un método desde un contenedor externo en tiempo de ejecución?
No estoy seguro de cómo continuar con el nivel de invocación del método. Desde mi entendimiento, del objeto clazz, usaría getMethod o getDeclaredMethod para obtener un objeto Method desde el que llamaría invoke. Por supuesto, invocar requiere una instancia. ¿Sería eso lo que se llama doRun en el código de ejemplo?
¿Necesito realizar la llamada al método doRun.run() aunque quiero ejecutar un método diferente de main (suponiendo que sea principal en el objeto doRun al que se llama con la invocación de ejecución)?
Solo para una mayor aclaración de la publicación original, pregunto: ¿DoRun.run() inicia un nuevo hilo ejecutando la instancia del objeto de clase de tipo clazz?
Gracias por ayudarme a aclarar esto.
Miré "how-should-i-load-jars-dynamically-at-runtime" (perdón, solo permitía un hipervínculo), sin embargo, esto violaba la admonición de maldad Class.newInstance en la primera publicación I referenciado
Por lo tanto, si entiendo tu comentario siguiendo el código, con una interfaz, sé qué métodos están disponibles y puedo escribir código llamando al método directamente después de enviar el objeto de instancia de manera apropiada. ¿Es esto cierto? – Todd
Por supuesto, eso supone que el código original se había compilado utilizando la interfaz, no uno que creé más tarde e intento convertir la instancia. – Todd
@Todd - sí, lo tienes. El enfoque de interfaz (u otro tipo de implementación de tipo fuerte) a menudo se usa con complementos donde el código ha sido escrito para ser instanciado dinámicamente. Si está realizando introspección e invocación en clases arbitrarias, esta no es una opción. – McDowell