Kashiash's Blog

o programowaniu inaczej : jak zrobić i się nie narobić

Błąd w Java SDK 1.5! – The method onClick(View) of type new View.OnClickListener(){} must override a superclass method

Posted by kashiash w dniu 19 grudnia, 2010

Problem który zmarnował mi kilka godzin jakże cennego życia:

dla kodu:
mAgreementDateText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pickDate((Button) v);
}

pojawiał sie komunikat :
The method onClick(View) of type new View.OnClickListener(){} must override a superclass method.

Okazalo się że Java SDK 1.5 ma problem z override. Trzeba dla projektu wejsc do Properties (Ctrl-Enter) i zmienić Java compiler na 1.6 i włala

jednak moja podświadoma niechęć do javy i eclipsa ma swoje uzasadnienie 😉

Komentarze 4 to “Błąd w Java SDK 1.5! – The method onClick(View) of type new View.OnClickListener(){} must override a superclass method”

  1. VaNTa said

    To nie blad tylko feature. Java 1.5 za override uwaza tylko nadpisanie metody z klasy nadrzednej a nie implementacje metody z interfejsu. W javie 1.6 juz jest to „poprawnione”, czyli zgodne z intuicja.

    W Twoim przypadku problemem jest eclipse, ktory wygenerowal Ci adnotacje @Override dla implementacji metody z interfejsu, mimo ze miales w projekcie ustawiona jave 1.5

    • kashiash said

      nie eclipse wpisał override tylko MOBY, bo tak go nauczyłem … a tak mnie nauczyły przykłady z netu.
      Dziwne było to ze działało z override, potem przeinstalowałem komputer i przestało. A irytujący jest temat gdy na jednym komputerze ma być override a na drugim nie – w tym samym kodzie, w tej samej aplikacji.

      • VaNTa said

        To nie kwestia komputera, tylko kompilatoa a dokladniej jego poziomu zgodnosci kodu wynikowego. Zobacz Java Language Specification (JLS).

        Jesli chcesz by komus zadzailo z Java 1.4 to np. musialbys zrezygnowac z adnotacji. Innym rozwiazaniem jest powiedzenie: „moj tool generuj kod dla javy 1.6” i tyle 🙂

      • kashiash said

        i nie ukrywam, ze dokładnie tak che to robić

Dodaj komentarz