2010-03-22 13 views
7

¿Se puede anular el método en java sin usar anotaciones? Debido a que Eclipse no lo admite si usa JRE6, debe volver a 5 para usar la anotación @Override. ¿Este método será anulado si elimino la anotación?Anulación de método

@Override public String toString() { 
    return name + " [" + genre + "]"; 
    } 
+4

"eclipse no lo admite si usa JRE6": esto no es cierto, ¿qué le dio esa idea? – skaffman

+0

@skaffman, aquí es donde obtuve la idea de http://i39.tinypic.com/dw5lj5.png –

+1

* smile *: esto solo indica que el nivel de fuente actual para su proyecto es <1.5. Esta configuración es bastante independiente del JRE, en realidad puedes usar JRE 1.6 junto con el nivel de fuente 1.4, y supongo que eso fue lo que sucedió. –

Respuesta

8

¿Se puede anular el método en java sin usar anotaciones?

Sí, la anotación @Override no es necesaria para anular un método.

Con solo tener una definición de método con el mismo método, la firma de una clase ancestra es suficiente para anular un método.

La anotación @Override es solo un recordatorio para el compilador que dice que la definición del método está destinada a anular un método.

Si un método que tiene un @Override en realidad no anula un método, el compilador arrojará un error de compilación: la anotación sirve como una verificación adicional en tiempo de compilación para ver si la definición del método anula un método.

Debido a que el eclipse no lo admite si se utiliza jre6, es necesario volver a 5 para usar @ Override anotación.

que suceda a utilizar Eclipse focalización Java 6, y soy capaz de utilizar la anotación @Override, así que no estoy muy seguro de lo que puede ser la causa de esto. Anotaciones ha sido apoyado desde Java 5, y se ha integrado más estrechamente a la lengua ya que Java 6.

Editar

Desde el comentario de Andreas_D a la pregunta: ¿

sonrisa - este simplemente indica que el nivel de fuente actual para su proyecto es < 1.5. Esta configuración es bastante independiente del JRE, de hecho puede usar JRE 1.6 junto con el nivel 1.4 fuente - y supongo, eso es lo que pasó .

¡Esto parece ser una de las formas en que se puede producir un error de compilación!

La manera de comprobar si el "nivel de conformidad del compilador" está ajustado a algo debajo de Java 5 está,

  1. Ir a los Propiedades del proyecto Java en Eclipse
  2. A continuación, vaya a la compilador Java menú
  3. Compruebe que el compilador Nivel de cumplimiento se establece en 1,5 o superior.

Editar

En cuanto a la pantalla de Gandalf STORMCROW, parece que el nivel de conformidad del compilador se fija más bajo que el JDK 1.5. Al hacer clic en Cambiar el cumplimiento del proyecto y JRE a 1.5 solución rápida, debería arreglar la situación actual.

La cuestión es, se introdujeron las anotaciones en Java 5.

Parece que el proyecto Java en Eclipse está configurado de modo que el código fuente sólo puede contener características que se introdujeron antes de Java 5, por lo tanto, no permitir el uso de anotaciones.

La manera de solucionar la situación es decirle a Eclipse que cuenta a partir de Java 5 se puede utilizar, ajustando el nivel de cumplimiento compilador a 1.5 o superior.

+0

@coobird Esto es lo que quiero decir http: //i39.tinypic.com/dw5lj5.png –

3

@override es solo una manera de asegurarse de que si cambia el contrato (el método reemplazado) este método no se compilará. Sin él, se considerará como una función diferente.

En cuanto al JRE6, no estoy seguro de lo que quiere decir: las anotaciones son compatibles.

Pruebe el jdk?

0

No es necesario que utilice la anotación @Override. Sin embargo, si lo hace y el método no puede anular un método en una superclase, el compilador devolverá un error.

Cuestiones relacionadas