2008-09-18 5 views
35

A menudo refactorizo ​​el código primero creando una clase interna dentro de la clase en la que estoy trabajando - Cuando termino, muevo todo a una nueva archivo de clase. Esto hace que el código de refactorización en la nueva clase sea extremadamente fácil porque A) solo estoy tratando con un solo archivo, y B) no creo nuevos archivos hasta que tenga una idea bastante buena de los nombres/nombres (a veces termina como más de una clase).Puede eclipsar extraer una segunda clase en el archivo de clase en su propio archivo

¿Hay alguna forma en que Eclipse me pueda ayudar con el movimiento final? Debería ser capaz de decir en qué paquete quiero que esté la clase, puede encontrar el nombre del nombre de la clase y el directorio del paquete.

Esto parece un refactor trivial y realmente obvio, pero no puedo entender las pulsaciones de teclas/gestos/lo que sea para hacerlo realidad. Intenté arrastrar, menús, menús contextuales y navegar por los atajos de teclado.

¿Alguien sabe esto?

[editar] Estas ya son clases de "Nivel superior" en este archivo, no clases internas, y "Mover" no parece querer crear una nueva clase para mí. Esta es la manera difícil en que generalmente lo hago: consiste en salir, crear una clase vacía, regresar y moverme. Me gustaría hacer todo en un solo paso.

Respuesta

43

Lamento haber dado la respuesta incorrecta antes. Volví a revisar, y no hizo nada que desea. Encontré una solución para ti, de nuevo, en 3.4.

Resalte la clase, haga una copia CTRL-C o corte CTRL-X, haga clic en el paquete al que desea que entre la clase, y haga un pegar, CTRL-V. Eclipse generará automáticamente la clase para ti.

Convertir miembro a nivel superior no funciona. Hacer eso creará un campo de la clase externa y generará un constructor que tome la clase externa como un parámetro.

+0

Tan cerca . Eso es exactamente lo que quiero, pero pegar aparece en gris en el paquete cuando lo hago. Me pregunto si mi versión del eclipse es demasiado antigua. 3.3.1.1? –

+0

Acabo de probarlo en 3.3 y funcionó. Hmm ... tal vez te perdiste de copiar la línea de la clase? – scubabbl

+2

¡Entendido! Solo funciona en Package Explorer, no en Navigator. ¡Muchas gracias! –

0

se puede hacer de 2 refactorizaciones:

  1. convertir el tipo de miembros a nivel superior

  2. Mover

1

Haga clic en el nombre de la clase (en el código fuente) y elija Refactor -> Convertir tipo de miembro a nivel superior. Sin embargo, no le permite elegir el paquete.

28

En Eclipse 3.6, que puede hacer: Refactor -> tipo de movimiento a un nuevo archivo

+0

que hizo el trabajo por mí, ¡gracias! –

+0

+1 ¡Esto era exactamente lo que estaba buscando!Busqué "clase interna de extracto de eclipse en clase externa", esta fue la primera pregunta que surgió, y esta fue la respuesta exacta que necesitaba. ¡Gracias! – vergenzt

1

Para IntelliJ IDEA/Estudio Android: Refactor -> Mover -> Recursos MyInnerClass clase interna a nivel superior

Cuestiones relacionadas