Qual è la differenza tra l'istanziazione e il caricamento di una classe in Java?

6

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?

    
posta prasonscala 01.03.2011 - 06:35
fonte

4 risposte

10

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.

    
risposta data 01.03.2011 - 07:07
fonte
2

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.

    
risposta data 01.03.2011 - 06:55
fonte
2

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.

    
risposta data 23.10.2012 - 07:17
fonte
1

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.

link

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.

    
risposta data 12.06.2016 - 10:28
fonte

Leggi altre domande sui tag