Resulta que si implementamos una interfaz y anotamos en la implementación uno de los métodos implementados con @Override, el compilador de JDK 6 no se quejará mientras que sí lo hará el de JDK 5.
public interface MyInterface {
public void f();
}
public class MyClass implements MyInterface {
@Override
public void f() {
// TODO Auto-generated method stub
}
}
Que conste que lo he probado fuera de Eclipse (¡¡sí, sí, he salido a la linea de comandos!!) y que el resultado es el esperado. Al ejecutar javac MyInterface.java y javac -cp . MyClass.java con JDK 1.6.0_11 no obtengo error alguno, sin embargo, cuando lo hago con JDK 1.5.0_12 obtengo “method does not override a method from its superclass”.
La verdad, a mi me parece que debería haberse quedado como en JDK 5 puesto que “override” significa “invalidar” y justamente eso es lo que se hace al sobrescribir un método: invalidar la implementación de la superclase. Pero bueno, habrá que guardarlo en esa lista de incongruencias peligrosas a tener en cuenta en los despliegues… 🙂