Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

@Override itp


Rekomendowane odpowiedzi

Opublikowano

Witam,
czy mógłby mi ktoś wytłumaczyć czym są magiczne @Override, @SuppressWarnings itp, które Eclipse co jakiś czas sam mi dodaje i do czego konkretnie one służą?

Opublikowano

Witam,

czy mógłby mi ktoś wytłumaczyć czym są magiczne @Override, @SuppressWarnings itp, które Eclipse co jakiś czas sam mi dodaje i do czego konkretnie one służą?

ogólnie to wszystko z @ to adnotacje:

https://docs.oracle.com/javase/tutorial/java/annotations/

 

@Override

służy do poinformowania kompilatora (i IDE zwzyczaj) że dana metoda jest nadpisana, np:

public interface Runnable
{
    void run();
}

public class Test
{
    @Override
    public void run(){}
}

bez Override oczywiście też zadziała, ale:

  • Od razu widzisz że dana metoda nie jest z tej klasy - wiesz że nie możesz usunąć czy ot-tak zmienić nazwy.
  • IDE/kompilator wyrzuci ci błąd, jeśli Override będzie nad metodą która nie jest nadpisaniem innej, czyli od razu zauważysz po zmianie wersji libki że coś się zmieniło.

Czyli ogólnie cel jest prosty: unikanie bugów.

 

 

@SuppressWarnings to inna sprawa, i nie powineneś go dawać tylko dlatego że eclipse proponuje, w pierwszej kolejności powinieneś postarać napisać się kod tak, by nie wyrzucał on żadnych ostrzeżeń.

Ale nie zawsze się da, np w przypadku ostrych zabaw z refleksjami czy często wczytywaniem konfiguracji, gdzie też dużo castujemy itd.

 

I ową adnotacje razem z warningiem który chcemy ignorować, dajemy tam gdzie sami zadbaliśmy o bezpieczeństwo.

np kompialtor drze się że "unchecked cast" bo castujesz nagle obiekt z listy <?> do jakiegoś swojego obiektu:

List<?> list = jakasMetdaCzyCos();
MyObject obj = (MyObject) list.get(0);

i dajemy tutaj SuppressWarnings kiedy jesteśmy pewni że tam na 100% jest ten obiekt, bo np w tej tajemniczej metodzie istnieje kod który to sprawdza.

1438614356923701010629.png

 

Opublikowano

ogólnie to wszystko z @ to adnotacje:

https://docs.oracle.com/javase/tutorial/java/annotations/

 

@Override

służy do poinformowania kompilatora (i IDE zwzyczaj) że dana metoda jest nadpisana, np:

public interface Runnable
{
    void run();
}

public class Test
{
    @Override
    public void run(){}
}

bez Override oczywiście też zadziała, ale:

  • Od razu widzisz że dana metoda nie jest z tej klasy - wiesz że nie możesz usunąć czy ot-tak zmienić nazwy.
  • IDE/kompilator wyrzuci ci błąd, jeśli Override będzie nad metodą która nie jest nadpisaniem innej, czyli od razu zauważysz po zmianie wersji libki że coś się zmieniło.

Czyli ogólnie cel jest prosty: unikanie bugów.

 

 

@SuppressWarnings to inna sprawa, i nie powineneś go dawać tylko dlatego że eclipse proponuje, w pierwszej kolejności powinieneś postarać napisać się kod tak, by nie wyrzucał on żadnych ostrzeżeń.

Ale nie zawsze się da, np w przypadku ostrych zabaw z refleksjami czy często wczytywaniem konfiguracji, gdzie też dużo castujemy itd.

 

I ową adnotacje razem z warningiem który chcemy ignorować, dajemy tam gdzie sami zadbaliśmy o bezpieczeństwo.

np kompialtor drze się że "unchecked cast" bo castujesz nagle obiekt z listy <?> do jakiegoś swojego obiektu:

List<?> list = jakasMetdaCzyCos();
MyObject obj = (MyObject) list.get(0);

i dajemy tutaj SuppressWarnings kiedy jesteśmy pewni że tam na 100% jest ten obiekt, bo np w tej tajemniczej metodzie istnieje kod który to sprawdza.

rozumiem, dzięki B)

do zamknięcia

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...