2012-01-27 13 views
37

He creado una interfaz, con aproximadamente 30 métodos e implementado en 30 clases.IntelliJ ¿es posible agregar @Overrrides a todos los métodos de una interfaz en particular?

Quiero agregar @Override a cada una de las implementaciones, pero me gustaría no hacerlo a mano.

¿Cómo puede ayudarme IntelliJ?

interfaz se parece a esto: Código

public interface PreviewObjectTests { 
    void testGetName(); 
    void testGetType(); 
    //... 30 similar methods 
} 

aplicación:

public class PreviewObjectAccountTest implements PreviewObjectTests { 

    //I want to add @Override here! 
    @Test public void testGetName() { 
     assertThat(...); 
    } 

    //I want to add @Override here! 
    @Test public void testGetType() { 
     assertThat(...); 
    } 

    //...30 similar methods 

} 
+2

fácil de hacer en eclipse, no saber acerca de IntelliJ. – Scorpion

+2

¿Cómo lo harías en Eclipse, entonces? Podría ser útil para los lectores de esta pregunta saber :) –

Respuesta

44

hace fácilmente con Alt + Introduzca intención, a continuación, pulse flecha de la derecha para el sub-menú:

Fix all

+0

En realidad, no recibo esta sugerencia de intención en mi archivo. La única intención que tengo en mi lista es 'Expandir a' @test() ''. ¿La intención a la que se refiere solo funciona en archivos de clase de producción y no en pruebas? –

+0

Asegúrese de que el nivel de idioma del proyecto esté configurado en 1.6 o superior. – CrazyCoder

+0

El nivel de idioma * se establece * en '" nivel 6.0 - @Override en las interfaces "'. (Yo uso intelliJ 11.01 con java 1.6.0_27). –

-1

Encontré una forma de hacerlo con la sencilla herramienta de búsqueda/reemplazo.

  1. En primer lugar me cambió un nombre de método para provocar todos los archivos que implementan la interfaz para cambiar
  2. Entonces creé un hallazgo sencilla/reemplazan a mirar sólo en los archivos modificados.

Intellij Add @override for tests in changed files only

Esto funciona en mi caso particular, porque no había realmente ningún otros métodos en los archivos de clase. Asumiré que esto será un poco más loco si tuviera muchos métodos en los archivos que pertenecen a otras interfaces

+1

-1 (lo cual no puedo hacer :)) Hacer una búsqueda/reemplazar es una mala idea. –

+0

Acepto que es una mala idea, pero no han surgido mejores ideas. Afortunadamente, esto funcionó para mí debido a la forma en que organicé los archivos de prueba de mi unidad. –

+0

El reemplazo de texto no es bueno, porque debe verificar qué métodos están anulando y cuáles no. Y dado que esta característica está incorporada en los IDEs de Java, no tengo más opción que votar hacia abajo: '( –

-1

No es eclipse ni idea específica. Su specfic compilador y qué cumplimiento se adhieren. En eclipse es 1.6 o superior. Y en la idea, creo que es para 1.5 o superior.

En los casos anteriores, será verificado automáticamente por IDEs respectivos.

+0

Lo siento, compañero para el negativo. La pregunta es sobre la fijación automática: "Quiero agregar @Override a cada una de las implementaciones , pero me gustaría no hacerlo a mano. " –

36

Para IntelliJ:

  1. Compruebe si tiene "Missing @ Override anotación" marcada en el interior Preferencias -> Ajustes del proyecto -> Inspecciones -> problemas de herencia.
  2. Usar Analizar -> Inspeccionar el código
  3. Encontrar problemas de herencia -> Falta la anotación @Override dentro de la ventana "Resultados para el perfil de inspección".
  4. Aplicar arreglo "Añadir anotación @ Override" Apply fix "Add @Override annotation"
+1

Está en" Estructura de clase "en lugar de" Problemas de herencia "en mi versión de Intellij pero puede buscar en la pantalla" inspecciones "para" anular "y encontrar el" Desaparecido ". Anotación @Overrid "fácilmente. –

0

para Eclipse (probado en Marte.2):

Ventana/Preferencias (o Propiedades del proyecto) Java/Compilador de error/advertencias Anotaciones Missing anotación @ Override - Set de error (o advertencia)

Después de reconstruir el espacio de trabajo, en los marcadores Ver, haga clic derecho en uno de los errores, Solución rápida (Ctrl + 1) y todos los errores deberían aparecer. Seleccione todo y aplique la solución.

Esto funcionó para mí para anotar adecuadamente unos pocos cientos de clases ...

Cuestiones relacionadas