Possible Duplicate:
When do you use Java’s @Override annotation and why?Co to jest @Override dla w Javie?
Czy istnieje inny powód do opisywania metody z @Override, poza tym, że kompilator sprawdza, czy nadklasa ma tę metodę?
Possible Duplicate:
When do you use Java’s @Override annotation and why?Co to jest @Override dla w Javie?
Czy istnieje inny powód do opisywania metody z @Override, poza tym, że kompilator sprawdza, czy nadklasa ma tę metodę?
Jak można opisać, @Override tworzy kontrolę kompilacji, że metoda jest nadpisywana. Jest to bardzo przydatne, aby upewnić się, że nie masz głupiego problemu z podpisami, gdy próbujesz przesłonić.
Na przykład, widziałem następujący błąd:
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
Ta klasa kompiluje jak napisane, ale dodając tag @Override do metody Równa spowoduje błąd kompilacji, gdyż nie przesłonić metodę equals na obiekcie. Jest to prosty błąd, ale może uciec nawet przed doświadczonym programistą.
@AngryDuck to dlatego, że używasz 3 znaków zapytania. – Det
Sprawdza nie tylko kompilator, ale może to być przydatne; Dokumentuje również zamiary programisty.
Na przykład, jeśli nadpisujesz metodę, ale nie używasz jej nigdzie w stosunku do samego typu, ktoś przychodzący do kodu później może się zastanawiać, dlaczego na ziemi jest. Adnotacja wyjaśnia jego cel.
Zastanawiam się, jakie były punkty reputacji, gdy odpowiedziałeś na to pytanie. –
@OmarTariq: Podejrzewam, że około 50K podejrzewam. –
@OmarTariq Tak czynię :) Skomentowałem twój komentarz ... –
nope - oprócz tego, że również poprawia czytelność (tj oprócz cokolwiek wskaźnik IDE używa, to sprawia, że łatwo zauważyć, że metoda zastępuje oświadczenie nadklasy)
Nie, ty go prawie przygwoździłeś.
@Override
informuje kompilator swój intencją: jeśli oznaczyć metodę @Override
, zamierzałeś przesłonić coś z nadklasy (lub interfejsu w Javie 6). Dobry IDE będzie pomocny w oznaczeniu dowolnej metody, która zastąpi metodę bez numeru @Override
, więc połączenie tych dwóch pomoże upewnić się, że robisz to, co próbujesz.
Również szeroko odpowiedział w http://stackoverflow.com/q/94361/697630 –