podstawy javy

themarcq
  • Rejestracja:około 14 lat
  • Ostatnio:około 14 lat
  • Postów:26
0

Jestem nowy w te klocki, uczę się z książki.
Nie mogę jednak roztrzygnąć czemu mi nie działa to:

plotno_menu.java

Kopiuj
 
private void wybierz(){
if (wybor==0){/**/}
if (wybor==1){/**/}
if (wybor==2){menu.koniec();}
}

menu.java

Kopiuj
 
public void koniec(){
this.notifyDestroyed();
}

Wyswietla błąd mówiący, że nie-statyczna metoda menu.koniec nie może być wykonana przez statyczny kontekst(?!)


gmclan.org - źródło mej wszelkiej wiedzy o programowaniu
edytowany 1x, ostatnio: themarcq
PI
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 10 lat
0

Zrób:

Kopiuj
public static void koniec (){...}

to załatwi sprawę na chwile a Ty doczytaj o modyfikatorach public private static itd. Parę dni temu czytałem coś podobnego na temat metod static. O ile dobrze pamiętam był identyczny błąd jak u Ciebie.

themarcq
  • Rejestracja:około 14 lat
  • Ostatnio:około 14 lat
  • Postów:26
0

dobrze, teraz błąd przesunął się na koniec(), treść błędu dalej ta sama


gmclan.org - źródło mej wszelkiej wiedzy o programowaniu
edytowany 1x, ostatnio: themarcq
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:12 minut
0

Na pewno przy metodzie wybierz nie ma modyfikatora static? Generalnie sprawa jest taka, że jak jesteś w statycznej metodzie to nie możesz odwoływać się do pól, ponieważ nie masz wskaźnika do obiektu. Wszystkie wywołania metody np foo() są równoważne zapisowi this.foo(). To this jest dodawane implicite w niestatycznych metodach, a w statycznych this nie jest dostępne (ponieważ metody statyczne nie są wywoływane na rzecz jakiegokolwiek obiektu).

Przemyśl swój program i najlepiej powyrzucaj wszystkie statyczne rzeczy, oprócz singletonów i funkcji main().


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
themarcq
  • Rejestracja:około 14 lat
  • Ostatnio:około 14 lat
  • Postów:26
0

nigdzie nie mam static, a gdy jest przy koniec()takze nie dziala

E:dobrze, rozwiązałem zagadkę:
musiałem przenieść cały CommandListener do menu i wszystkie rzeczy z tym związane, a funkcję notifyDestroyed przeniosłem do destroyApp(), ogólnie, wszelkie odniesienia do potrzebnej mi funkcji zawarłem w głownym midlecie


gmclan.org - źródło mej wszelkiej wiedzy o programowaniu
edytowany 1x, ostatnio: themarcq

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.