Esiste un modo per sostituire (eseguire l'override) un'implementazione della classe Java, che è già caricata dal caricatore della classe System da un'altra implementazione (disponibile come array di byte)?Implementazione della classe sostitutiva (override) in Runtime (Java)
Per illustrare il mio dubbio, segue questo codice:
public class Main {
public static void main(String ... args) {
Foo foo = new Foo();
foo.print();
ClassLoader cl = ...
Foo foo2 = (Foo) cl.newInstance();
foo2.print();
}
}
Il metodo print() delle prime stampe Foo "Attuazione 1", come la seconda stampe "Attuazione 2". La seconda istanza di foo viene recuperata dal programma di caricamento classi da una matrice di byte (che può essere archiviata in un file o ottenuta da qualsiasi stream ...)
PS: è un requisito che Foo è una classe, non un'interfaccia e non può essere estesa, ovvero i byte effettivi (all'interno della VM) che definiscono l'implementazione della classe sono sovrascritti.
sei positivo che vuoi davvero farlo? sarebbe bene spiegare perché nella domanda. –