2010-11-01 9 views
7

Esto debe ser posible, pero no puedo resolverlo en Eclipse. TengoExtraer clase en Eclipse

/** ClassA.java */ 
class A { 
    ... 
} 

class B { 
    ... 
} 

y me gustaría para seleccionar la clase B y extraer a su propio archivo para que me sale:

/** ClassA.java */ 
class A { 
    ... 
} 

y

/** ClassB.java */ 
class B { 
    ... 
} 

¿Cómo puedo hacer esto en ¿Eclipse?

Respuesta

11

Así es como lo hace (funciona en Eclipse 3.5):

  1. Seleccione su código para extraer:

    /** ClassB.java */ 
    class B { 
        ... 
    } 
    
  2. Cut

  3. Haga clic derecho sobre el paquete en el que desea ponerlo

  4. Seleccionar pasta. (Luego Organizar importaciones si es necesario.)

+2

¡Genial! ¡Gracias! ¡Funciona! – Ztyx

+0

Me gusta eso, evita tener que crear el archivo. Es extraño que Eclipse sea tan inconsistente en cuanto a cuándo las importaciones se copian correctamente. Si pegas manualmente en el archivo, seguirán las importaciones. Aquí, no se copian. –

+0

Sugerí la opción de cortar y pegar, pero no sabía del paso 3 y 4. Gracias por eso ... –

1

Si no hay ninguna función específica, a continuación, la creación de la nueva clase, copiar y pegar el contenido de B y luego golpear CTRL - SHIFT - O en ambos archivos (o al menos A.java) para limpiar hasta las importaciones deberían hacerlo.

No es algo muy común que pedir, y es bastante fácil hacerlo manualmente.

Editar: También puede crear B.java y luego usar Refactoring-> Move on B en su A.java para moverlo a B.java. Sin embargo, no pareció copiar las importaciones cuando lo hice, mientras que cuando copié y pegué manualmente, agarré las importaciones automáticamente.

+0

I intentado mover la clase B de A pero eso nunca funcionó, así que lo dejé fuera de mi solución. –

1

No hay ninguna funcionalidad que yo sepa. Deberá crear un archivo java de su elección y cortar y pegar la clase en el nuevo archivo. Repare los nombres de importación y declaración de paquete (si es necesario).


EDITAR La mejor manera de hacerlo: sólo tiene que crear un archivo en blanco B.java, volver a A.java, resalte B.java y haga clic derecho y seleccionar Refactor -> Move (Alt+Shift+V para abreviar). Moverá la clase B a B.java.

He probado y funciona. Es posible que necesite administrar las importaciones si es necesario.

+0

Eso es gracioso. Aunque es bastante simple de hacer, uno pensaría que hay un atajo para eso. Parece una operación común. – Ztyx

+1

It * is * es una operación común. Por lo tanto, IDEA lo apoya desde edades. – Mot

6

En mi Eclipse (3,6 - Helios SR1), que ponen de relieve el nombre del tipo (B) y, a continuación, haga clic en el menú emergente y luego seleccione Refactor>Move Type to New File ....

Editar: Se llamaba 'Convertir Tipo miembros a nivel superior' en verions anteriores, pero se ha actualizado para trabajar con algo más que tipos de miembros:

http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part2.html

tipo moverse a la nueva refactorización de archivos.

La convertir el tipo de miembros a nivel superior refactorización se ha renombrado a mover Tipo de archivo nuevo y ahora permite que cualquier tipo secundario en un archivo que desea mover en su propio archivo. La acción continúa funcionando para los tipos de miembros.

+1

Hmm, me pregunto qué plugin proporciona eso. No tengo esa opción en mi inventario de instalación. –

+0

Eso es gracioso. No tengo esa opción. ¿Qué versión de Eclipse tienes? – Ztyx

+0

Se llama así en 3.6, tenía un nombre diferente antes. –

0

Coloque el cursor en algún lugar dentro de la clase B (tal vez tiene que estar dentro del nombre de la clase). Seleccione Refactor -> Move type to new File.

(. Ese es el nombre de la acción en Eclipse 3.6 Creo en versiones anteriores era Move member type to top level)

Referencia:

Cuestiones relacionadas