2011-11-10 12 views
21

Duplicar posible:
When do you use Java's @Override annotation and why?¿Cuál es el propósito de la anotación @Override?

Mi pregunta es muy básica por la que nosotros, las personas utilizan @Override anotación y cuál es la importancia de esta anotación?

En Old JDK ¿por qué no se muestra como advertencia, pero en la última JDK se requiere entonces ¿Por qué ..?

+0

Aquí está el debate sobre el mismo tema [¿Cuándo se usa la anotación @Override de Java y por qué?] [1], parece útil. [1]: http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – COD3BOY

+0

(http://docs.oracle.com/javase) /tutorial/java/annotations/predefined.html)[Este enlace podría ayudarlo] –

Respuesta

32

Suponga que tiene:

public class Foo 
{ 
    public void bar(String x, String y) {} 
} 

public class Foo2 extends Foo 
{ 
    public void bar(String x, Object y) {} 
} 

Usted realmente significaba Foo2.bar para anular Foo.bar, pero debido a un error en la firma, no lo hace. Si usa @Override, puede obtener el compilador para detectar el error. Es también indica a leyendo el código que esto está anulando un método existente o implementando una interfaz, informándoles sobre el comportamiento actual y el posible impacto de renombrar el método.

Además, el compilador puede darle una advertencia si un método, se sustituye un método sin especificando @Override, lo que significa que puede detectar si alguien ha añadido un método con la misma firma a una superclase sin que sea consciente de ello - no puede querer para anular el nuevo método, ya que su método existente puede tener una semántica diferente. Mientras que @Override no proporciona una forma de "anular" el método, al menos resalta el problema potencial.

6

Sólo para asegurarse en tiempo de compilación que realmente estamos reemplazando el método, también añade una buena cantidad a la legibilidad del código

@Override es allí desde JDK 1.5, lo que podría tener la advertencia en antes

2

Usando esta anotación, puede estar seguro de que realmente está reemplazando el método base, no creando uno nuevo (por ejemplo, al usar accidentalmente argumentos incorrectos). Si usa la anotación @Override, obtendrá un error de tiempo de compilación si algo no está bien.

+0

No recibo ningún error de tiempo de compilación, por favor avíseme, qué extrañé [aquí] (http://stackoverflow.com/questions/ 23191807/use-of-override-annotation-in-custom-listener-class-doesnt-work-as-expected) – paul

1

Para verificar durante el tiempo de compilación que en realidad está anulando un método. IDE puede decirle de inmediato cuando proporcione esa anotación.