Ci sono 10 milioni di articoli e documenti là fuori su cosa sono i classloader Java e come/* perché * scrivere i propri ... ma tutti sembrano presumere alcune cose che non riesco a trovare un semplice rispondi a!Quando si attivano i programmi di caricamento classi Java?
Capisco il lavoro del classloader: leggere bytecode e costruirne un oggetto. Diversi classloader fanno in modo diverso, ecc
Ma avendo mai avuto a che il codice contro un'API class loader nel mio codice, e mai dover scrivere uno dei miei, sto avendo enormi difficoltà a comprendere quando un ClassLoader
' il proprio codice viene effettivamente attivato.
Per esempio:
public static void main(String[] args) {
Fizz fizz = new Fizz();
fuzz.buzz();
}
qui, abbiamo un oggetto Fizz
. Prima che sia possibile creare un'istanza di Fizz
, è necessario un caricatore di classi per avviare e caricare Fizz.class
nella sua cache. Dove e quando succede?!?! Non è esplicitamente nel mio codice quindi deve essere implicitamente da qualche parte nel JRE ...?
tangenziale a questa domanda, se scrivo il mio programma di caricamento classe, dire, WidgetClassLoader
e si desidera configurarlo per caricare sia tutte le classi della mia applicazione, o forse solo la mia Fizz.class
, come faccio a "legare" questo WidgetClassLoader
nella mia applicazione in modo che sa quale classloader usare? Il mio codice avrebbe dovuto chiamare esplicitamente questo classloader o sarebbe implicito come il primo esempio? Grazie in anticipo!
È nel JRE, ovviamente. Leggi questo e Google per la configurazione personalizzata del programma di caricamento classe: http://www.javalobby.org/java/forums/t18345.html – duffymo
@duffymo - guarda il mio commento sotto la risposta di Andre - Ho la stessa domanda per te! – IAmYourFaja
Non vedo la necessità di scrivere mai un caricatore di classi per conto mio. Non una volta, durante tutto il tempo in cui ho scritto Java. E questo è dal 1,0 del 1997. Cosa ti fa pensare che ne hai bisogno? – duffymo