Wpis z mikrobloga

Dlaczego nie mogę zadeklarować zmiennych pod nazwą klasy, wspólnych dla wszystkich metod w tej klasie? Pewnie się mylę bo się nie znam, ale byłoby to logiczne i przydatne

non-static variable reader cannot be referenced from a static context


#java #programowanie
  • 7
  • Odpowiedz
@Aureos: Z opisu błędu wynika raczej, że próbujesz ze statycznej metody odwołać się do zmiennej zadeklarowanej dla instancji klasy, a tak nidyrydy. Czemu ta metoda musi być statyczna?
  • Odpowiedz
@Aureos: metoda statyczna nie może odwoływać się do pól klasy które nie są statyczne, usuń static z metody albo dodaj static przed nazwa zmiennej jeżeli ma być wspólna dla wszystkich instancji danej klasy
  • Odpowiedz
@Czesiowcy: @mentalna_zielonka: dodałem 'static' przed zmiennymi i już jest ok
nie mogłem usunąć static z metody bo była to główna metoda klasy i wywalało błąd że musi być static

przeczytałem dosc obszerne wyjaśnienie ze stackoverflow na ten temat i nadal nie rozumiem do czego to służy no ale ok :D
  • Odpowiedz
@Aureos: Metoda statyczna - z definicji - nie potrzebuje instancji. Wywołujesz ją poprzez nazwę klasy, a nie z danej, konkretnej instancji, utworzonej np. poprzez "new". Kompilator uniemożliwia więc odwoływanie się z metody statycznej do zmiennych lub metod, które takiej instancji potrzebują, tj, do wszystkich memberów niestatycznych.
  • Odpowiedz
@Aureos: Wrzucanie wszędzie static tylko dlatego żeby main() ruszył to słaba praktyka, wydziel sobie inna klasę w której wrzucisz metody guess i printWord. Albo możesz nawet wszystko wyrzucić do innych klas, a w main() tylko stworzyć obiekt/obiekty i wywołać jakieś ich metody :)
  • Odpowiedz