podstawy javy

0

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

plotno_menu.java

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

menu.java

 
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(?!)

0

Zrób:

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.

0

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

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().

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1