logo

Perché non è possibile fare riferimento alla variabile non statica da un contesto statico in Java

L'errore Non è possibile fare riferimento alla variabile non statica da un contesto statico in Java viene affrontato soprattutto dai principianti al momento della compilazione del programma Java. Il motivo per cui si verifica questo errore è che utilizzano una variabile membro non statica nel metodo main(). Poiché il metodo main() in Java è un metodo statico e viene invocato automaticamente, non è necessario creare un oggetto per invocarlo. Per comprendere l'errore, dovremmo prima comprendere il statico E non statico metodo in Java .

Metodo statico

In Giava , i metodi pubblici appartengono a un'istanza della classe ma se parliamo di metodo statico , appartengono a una classe e non a un'istanza di una classe. Non è necessario creare un'istanza della classe per invocare un metodo statico. Il membro statico può accedere solo al membro dati statico e può modificarne il valore.

Metodo non statico

Tutti i metodi senza avere statico la parola chiave prima del nome del metodo viene chiamata Non statico metodi. Non è necessario creare un'istanza della classe per accedere al metodo statico e alla variabile statica. I metodi non statici vengono utilizzati con associazione dinamica o runtime. A differenza di statico metodo, possiamo sovrascrivere il metodo non statico metodo.

Creiamo un programma Java e generiamo lo stesso errore.

mylivecriclet

Nell'esempio seguente, abbiamo dichiarato una variabile privata numero di tipo int prima del metodo main(). Nel metodo main(), stiamo cercando di incrementare il numero di 1. È da notare che il metodo main() è un metodo statico e la variabile non è statica. Quando compiliamo il programma sopra, otteniamo lo stesso errore, come mostrato di seguito.

Esempio statico1.java

 public class StaticExample { private int number=0; public static void main(String args[]){ number++; System.out.println(number); } } 

Produzione:

elenco di array in Java
Perché non è possibile fare riferimento alla variabile non statica da un contesto statico in Java

Ora dichiariamo la variabile numero come statico e compilare il codice. Tieni presente che la variabile e il metodo main() sono entrambi statici.

StaticExample2.java

 class staticExample { private static int number=0; public static void main(String args[]){ number++; System.out.println(number); } } 

Produzione:

Perché non è possibile fare riferimento alla variabile non statica da un contesto statico in Java

Il programma viene compilato ed eseguito correttamente.

Ogni istanza di una variabile non statica ha un valore diverso e viene creata quando l'operatore new() inizializza un'istanza di un oggetto. Le variabili statiche vengono create o inizializzate quando la classe viene caricata JVM .

Abbiamo bisogno di un'istanza di un oggetto per chiamare la variabile non statica. Possiamo creare molti oggetti dando valori diversi a quella variabile non statica o di istanza.

mysql inserito in

StaticExample3.java

 class variable { int number; public static void increment() { number++; } } class StaticExample { public static void main(String args[]) { variable var1 = new variable(); variable var2 = new variable(); variable var3 = new variable(); var1.number = 12; var2.number = 13; var3.number = 14; variable.increment(); System.out.println(var1.number); System.out.println(var2.number); System.out.println(var3.number); } } 

Produzione:

Perché non è possibile fare riferimento alla variabile non statica da un contesto statico in Java

Nel programma sopra, tre oggetti, var1, var2, var3 , vengono creati per la classe variabile e assegnato i tre diversi valori 12, 13, 14 per gli oggetti var1, var2 , E var3 , rispettivamente. Ora il numero la proprietà di ciascun oggetto ha il proprio valore intero. Quando proviamo ad incrementare il valore della proprietà number chiamando il metodo incrementa(), il compilatore non capisce per quale valore di number il metodo dovrebbe incrementare il valore. Il compilatore affronta l'errore di ambiguità e genera l'errore in fase di compilazione Non è possibile fare riferimento alla variabile non statica da un contesto statico .

Soluzione all'errore

Esiste un modo semplice per risolvere il problema Non è possibile fare riferimento alla variabile non statica da un contesto statico errore. Nel codice sopra, dobbiamo indirizzare la variabile non statica con il nome dell'oggetto. In modo semplice, dobbiamo creare un oggetto della classe per fare riferimento ad una variabile non statica da un contesto statico. Una nuova copia di tutte le variabili non statiche viene creata quando viene creata una nuova istanza di variabile. Quindi, possiamo accedere a queste variabili utilizzando il riferimento della nuova istanza della classe. ad esempio, considera il seguente programma Java.

esempi di sistemi operativi

StaticExample4.java

 class staticExample { int number = 0; public static void main(String args[]) { // using non-static variable by creating an object of the class staticExample test = new staticExample(); test.number++; System.out.println(test.number);a } } 

Produzione:

Perché non è possibile fare riferimento alla variabile non statica da un contesto statico in Java

Descrizione

Nel programma sopra, accediamo alla proprietà number utilizzando il nome della classe staticEsempio. Creiamo un oggetto con il nome della classe StaticExample test e incrementare il valore del numero utilizzando l'oggetto di prova.