¿Hay alguna forma de sustituir (anular) una implementación de clase Java, que ya está cargada por el cargador de clases del sistema por otra implementación (disponible como una matriz de bytes)?Implementación de clase sustituta (reemplazo) en Runtime (Java)
Para ilustrar mi duda, sigue este código:
public class Main {
public static void main(String ... args) {
Foo foo = new Foo();
foo.print();
ClassLoader cl = ...
Foo foo2 = (Foo) cl.newInstance();
foo2.print();
}
}
El método de impresión() de las primeras impresiones Foo "de aplicación 1", como los segundos uno imprime "Aplicación 2". La segunda instancia de foo es recuperada por el cargador de clases de una matriz de bytes (que puede almacenarse en un archivo o obtenerse de cualquier secuencia ...)
PD: Es un requisito que Foo sea una clase, no una interfaz, y no se puede extender, es decir, se sobrescriben los bytes reales (dentro de la VM) que definen la implementación de la clase.
¿Estás seguro de que realmente quieres hacer esto? sería bueno explicar por qué en la pregunta. –