Nel mondo Java, ci sono alcuni scenari in cui vedo gli sviluppatori utilizzati per caricare la classe piuttosto che l'istanza. Qual è la differenza tra l'istanziazione e il caricamento di una classe?
Nel mondo Java, ci sono alcuni scenari in cui vedo gli sviluppatori utilizzati per caricare la classe piuttosto che l'istanza. Qual è la differenza tra l'istanziazione e il caricamento di una classe?
Affinché una classe sia istanziata deve essere caricata dal classloader ... in molti casi questa è la prima volta che la classe è stata compilata just-in-time. Se si accede a una variabile statica su una classe, deve essere caricata. Se vuoi riflettere su una classe deve essere caricata. Ci sono molte circostanze in cui potresti semplicemente caricare una classe invece di istanziare.
Anche gli inizializzatori statici per un corso di classe la prima volta che la classe viene caricata (e prima di ogni altra cosa). Se disponi di un intializer statico esplicito, puoi utilizzarlo per eseguire un'inizializzazione globale, se necessario.
Non sono sicuro se questo è ciò che intendi, ma un programma di caricamento in effetti individua la definizione di una classe e la rende disponibile per l'uso da parte della JVM. Quindi, puoi istanziare un'istanza di esso.
Generalmente, "caricamento di classe" si riferisce al caricamento e all'inizializzazione delle definizioni di classe, ovvero il caricamento del bytecode dal file di classe, la creazione della classe Class, l'esecuzione degli inizializzatori statici, ecc.
Una volta caricata una classe e inizializzata, sarà possibile creare un'istanza della classe, ad es. crea un oggetto di quel tipo di classe.
Instantiating è una classe quando crei un'istanza di quella classe in fase di runtime. Anche se penso che ciò a cui ti stai riferendo potrebbe essere la classe inizializzazione ? Nel caso in cui, l'inizializzazione della classe si verifica quando si verifica uno dei seguenti casi:
1) un'istanza di classe viene creata usando la parola chiave new () o usando reflection usando class.forName (), che può lanciare ClassNotFoundException in Java.
2) viene invocato un metodo statico di Classe.
3) viene assegnato un campo statico di Classe.
4) viene utilizzato un campo statico di classe che non è una variabile costante.
5) se Class è una classe di livello superiore e viene eseguita un'istruzione di asserzione lessicalizzata all'interno della classe.
Il caricamento della classe avviene quando la JVM estrae la classe dal suo pacchetto e la carica nell'ambiente runtime da utilizzare in fase di runtime. Il programma di caricamento classi è responsabile di questo processo.
Leggi altre domande sui tag object-oriented java jvm