Possible Duplicate:
When do you use Java’s @Override annotation and why?¿Qué es @Override for en Java?
¿Hay alguna otra razón para anotar un método con @Override aparte de tener el cheque compilador que la superclase tiene ese método?
Possible Duplicate:
When do you use Java’s @Override annotation and why?¿Qué es @Override for en Java?
¿Hay alguna otra razón para anotar un método con @Override aparte de tener el cheque compilador que la superclase tiene ese método?
Como usted describe, @Override crea una verificación en tiempo de compilación de que un método está siendo anulado. Esto es muy útil para asegurarse de que no tenga un problema de firma tonto al intentar anular.
Por ejemplo, he visto el error siguiente:
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
Esta clase compila como está escrito, pero añadiendo la etiqueta @ Override al método equals provocará un error de compilación, ya que no prevalece sobre el método equals en Object. Este es un error simple, pero puede escapar incluso a un desarrollador experimentado
@AngryDuck es porque utilizas 3 signos de interrogación. – Det
No solo hace que el compilador revise, aunque eso sería suficiente para hacerlo útil; también documenta la intención del desarrollador.
Por ejemplo, si anula un método pero no lo usa en ninguna parte del tipo en sí, alguien que llegue al código más tarde puede preguntarse por qué está allí. La anotación explica su propósito.
Me pregunto cuáles fueron sus puntos de reputación cuando respondió esta pregunta. –
@OmarTariq: Supongo que aproximadamente 50K sospecho. –
@OmarTariq Yo también :) Voté tu comentario ... –
nop - excepto que también mejora la lectura (es decir, además de cualquier indicador utiliza el IDE, que hace que sea fácil de detectar que un método, se sustituye una declaración en la superclase)
No, casi lo tienes clavado.
@Override
le dice al compilador que su intención : si etiquetas un método @Override
, que la intención de reemplazar algo de la superclase (o interfaz, en Java 6). Un buen IDE marcará amablemente cualquier método que anule un método sin @Override
, por lo que la combinación de los dos ayudará a garantizar que está haciendo lo que está intentando.
También se ha respondido extensamente en http://stackoverflow.com/q/94361/697630 –