logo

Dlaczego do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego w Javie

Błąd Do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego w Javie z którym spotykają się głównie początkujący podczas kompilacji programu Java. Powodem wystąpienia tego błędu jest użycie niestatycznej zmiennej składowej w metodzie main(). Ponieważ metoda main() w Javie jest metodą statyczną i jest wywoływana automatycznie, nie musimy tworzyć obiektu, aby ją wywołać. Aby zrozumieć błąd, najpierw powinniśmy zrozumieć statyczny I niestatyczny metoda w Javie .

Metoda statyczna

W Jawa , metody publiczne należą do instancji klasy, ale jeśli mówimy o metoda statyczna , należą do klasy, a nie do instancji klasy. Nie ma potrzeby tworzenia instancji klasy, aby wywołać metodę statyczną. Element statyczny ma dostęp tylko do elementu danych statycznych i może zmieniać jego wartość.

Metoda niestatyczna

Wszystkie metody bez konieczności statyczny słowo kluczowe przed nazwą metody nazywane jest Niestatyczny metody. Nie ma potrzeby tworzenia instancji klasy w celu uzyskania dostępu do metody statycznej i zmiennej statycznej. Metody niestatyczne są stosowane w przypadku wiązania dynamicznego lub wykonawczego. w odróżnieniu statyczny metodę, możemy zastąpić metodę niestatyczny metoda.

Stwórzmy program Java i wygenerujmy ten sam błąd.

przekonwertować ciąg na datę

W poniższym przykładzie zadeklarowaliśmy zmienną prywatną numer typu int przed metodą main(). W metodzie main() staramy się zwiększać liczbę o 1. Należy zauważyć, że metoda main() jest metodą statyczną i zmienna nie jest statyczna. Kiedy kompilujemy powyższy program, pojawia się ten sam błąd, co pokazaliśmy poniżej.

StatycznyPrzykład1.java

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

Wyjście:

jak odkryć ukryte aplikacje
Dlaczego do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego w Javie

Teraz zadeklarujmy zmienną numer jako statyczny i skompiluj kod. Należy zauważyć, że zarówno zmienna, jak i metoda main() są statyczne.

StatycznyPrzykład2.java

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

Wyjście:

Dlaczego do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego w Javie

Program kompiluje się i uruchamia pomyślnie.

Każde wystąpienie zmiennej niestatycznej ma inną wartość i jest tworzone, gdy operator new() inicjuje instancję obiektu. Zmienne statyczne są tworzone lub inicjowane podczas ładowania klasy JVM .

Potrzebujemy instancji obiektu do wywołania zmiennej niestatycznej. Możemy stworzyć wiele obiektów, nadając różne wartości tej zmiennej niestatycznej lub instancji.

sesja wygasła

StatycznyPrzykład3.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); } } 

Wyjście:

Dlaczego do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego w Javie

W powyższym programie trzy obiekty, zmienna1, zmienna2, zmienna3 , są tworzone dla klasy zmienny i przypisał obiektom trzy różne wartości 12, 13, 14 zmienna1, zmienna2 , I var3 odpowiednio. Teraz numer właściwość każdego obiektu ma swoją własną wartość całkowitą. Kiedy próbujemy zwiększyć wartość właściwości number, wywołując metodę inkrementacji(), kompilator nie rozumie, o jaką wartość liczby metoda powinna zwiększyć tę wartość. Kompilator napotyka błąd niejednoznaczności i zgłasza błąd czasu kompilacji Do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego .

Rozwiązanie błędu

Jest jeden prosty sposób rozwiązania problemu Do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego błąd. W powyższym kodzie musimy zaadresować zmienną niestatyczną nazwą obiektu. W prosty sposób musimy utworzyć obiekt klasy, który będzie odwoływał się do zmiennej niestatycznej z kontekstu statycznego. Nowa kopia wszystkich zmiennych niestatycznych jest tworzona podczas tworzenia nowej instancji zmiennej. Możemy zatem uzyskać dostęp do tych zmiennych, korzystając z odniesienia do nowej instancji klasy. rozważmy na przykład następujący program Java.

dyskretna negacja matematyczna

StatycznyPrzykład4.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 } } 

Wyjście:

Dlaczego do zmiennej niestatycznej nie można odwoływać się z kontekstu statycznego w Javie

Opis

W powyższym programie dostęp do właściwości number uzyskujemy za pomocą nazwy klasy statycznyPrzykład. Tworzymy obiekt o nazwie klasy StaticExample test i zwiększ wartość liczby za pomocą obiektu testowego.