Siempre debe anotar los métodos con @Override
si está disponible.
En JDK 5 esto significa reemplazar métodos de superclases, en JDK 6, y 7 significa reemplazar métodos de superclases e implementar métodos de interfaces. La razón, como se mencionó anteriormente, es que le permite al compilador detectar errores donde cree que está anulando (o implementando) un método, pero en realidad está definiendo un nuevo método (firma diferente).
El ejemplo equals(Object)
contra equals(YourObject)
es un ejemplo estándar, pero el mismo argumento se puede hacer para las implementaciones de interfaz.
Me imagino que la razón por la que no es obligatorio anotar la implementación de métodos de interfaces es que JDK 5 marcó esto como un error de compilación. Si JDK 6 hizo esta anotación obligatoria, rompería la compatibilidad con versiones anteriores.
No soy un usuario de Eclipse, pero en otros IDEs (IntelliJ), la anotación @Override
solo se agrega al implementar métodos de interfaz si el proyecto está configurado como un proyecto JDK 6+. Me imagino que Eclipse es similar.
Sin embargo, hubiera preferido ver una anotación diferente para este uso, tal vez una anotación @Implements
.
wow esta pregunta podría ser más corta, pero es la pregunta que necesitaba. Gracias –
No puedo encontrar el reemplazo del artículo @Override (Oracle movió los viejos blogs Sun recientemente). ¿Sabes cómo encontrarlo? –
Deberíamos tener una anotación @Implement (s) por ahora (2015). Eso aclarará las cosas! – Alex