java eclipse automated-refactoring

java - ¿Cómo refactorizar una clase interna estática a una clase de nivel superior en Eclipse?



automated-refactoring (6)

Tengo problemas para encontrar la opción de refactorización correcta para el siguiente escenario:

Tengo un código como este (en Outer.java):

public class Outer { // ... class stuff public static class Inner { // ... inner class stuff } }

Estoy buscando una forma de seleccionar Inner, y convertirlo a una clase de nivel superior, en su propio archivo fuente .java . Sé que esto es bastante fácil de hacer manualmente con copiar / pegar, etc., pero se hace referencia a la clase interna en muchos lugares, y me gustaría que la opción de refactorización maneje el cambio en todos los sitios a los que se hace referencia.

He probado la opción Refactor -> Extract Class... pero eso hace algo extraño con un campo llamado data que no entiendo del todo.

La versión de Eclipse es 3.5.1 de Galileo.

¿Cómo refactorizo ​​una clase interna estática para que sea una clase de nivel superior?

Editar: No puedo creer que haya pasado por alto la opción de hacer esto. Gracias por todas sus respuestas correctas, +1 a todos ustedes. Todavía necesitaré aceptar una respuesta, así que si hay más información útil, por ejemplo, errores con el guión, todavía hay un propósito para dejar una respuesta.


Esto es tan fácil que no puedo creer que me lo haya perdido:

Con el cursor en cualquier lugar dentro del tipo interno, haga clic derecho y seleccione:
Refactor -> Convert Member Type to Top Level...

(No hay acceso directo en la configuración predeterminada)

Esto extrae automáticamente el tipo interno y lo coloca en su propio archivo, en el mismo paquete y directorio que el tipo externo.

Actualizar

En versiones posteriores de Eclipse, esta refactorización se ha renombrado como "Mover tipo a archivo nuevo".


Extraer clase no es lo que quieres.

Acabo de hacer esto usando Eclipse 3.4.2

  1. Seleccione Interno
  2. Haga clic derecho en ''Refactor-> Convertir tipo de miembro a nivel superior ...''

Para Intellj2018.1.

  1. clic derecho en la clase interna
  2. Refactor
  3. Movimiento
  4. Mover al nivel superior


Para completar, la versión 4.x de Eclipse ha cambiado la terminología y ahora llaman a esa operación como Move Type to New File...


Tengo 3.4.1, y si hago clic derecho en Inner,> refactor, tengo la opción "Tipo de miembro encubierto al nivel superior ...", que hace exactamente lo que quiere.


Utilice Refactor -> Convertir miembro al tipo de nivel superior