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
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:
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:
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:
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.