2010-01-22 18 views
28

Sto avendo difficoltà a trovare l'opzione corretta per il refactoring il seguente scenario:Come rifattorizzare una classe interna statica in una classe di livello superiore in Eclipse?

Ho codice come questo (in Outer.java):

public class Outer { 

    // ... class stuff 

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

Sto cercando un modo per selezionare Interna, e convertirlo in una classe di livello superiore, nel proprio file sorgente .java. So che questo è abbastanza facile da fare manualmente con copia/incolla ecc., Ma la classe interna viene referenziata in molti punti e vorrei che l'opzione refactor gestisse la modifica ovunque venisse referenziata.

Ho provato l'opzione Refactor -> Extract Class... ma questo fa qualcosa di strano con un campo chiamato data che non capisco.

versione di Eclipse è 3.5.1 Galileo.

Come faccio a rifattorizzare una classe interna statica come classe di livello superiore?


Modifica: Non posso credere di aver trascurato l'opzione per farlo. Grazie per tutte le vostre risposte corrette, +1 a tutti voi. Dovrò comunque accettare una risposta, quindi se ci sono altre informazioni utili, ad es. trucchi con la sceneggiatura, c'è ancora uno scopo di lasciare una risposta.

risposta

42

Questo è così facile non posso credere che ho perso:

Con il cursore in qualsiasi punto all'interno del tipo interno, fare clic destro e selezionare:
Refactor -> Convert Member Type to Top Level...

(Non v'è alcun collegamento nel predefinito impostazioni)

Questo estrae automaticamente il tipo interno e lo inserisce nel proprio file, nello stesso pacchetto e nella stessa directory del tipo esterno.

Aggiornamento

Nelle versioni successive di Eclipse questo refactoring è stato rinominato "Mossa Tipo a New file"

+10

Sembra che nel Helios rilasciare la funzionalità è stato rinominato in "Sposta tipo a New File ...". – ArtB

+1

E assicurati di selezionare solo la classe/l'interfaccia, non tutto il suo contenuto, anche. – xamde

+3

Potrebbe essere facile, ma l'ho trovato leggendo questa risposta! – reinierpost

2

ho 3.4.1, e se right-click su Inner,> refactoring, Ho l'opzione "Covert member Type to top level ..", che fa esattamente quello che vuoi.

2

Usa Refactor -> Converti membro ad alto livello Tipo

3

estratto classe non è ciò che si desidera.

ho appena fatto questo utilizzando Eclipse 3.4.2

  1. Selezionare interno
  2. Fare clic destro 'Refactor-> Convertire Tipo Utente in alto livello ...'
2

Per completezza, la versione 4.x di Eclipse è cambiato terminologia e ora chiamare tale operazione come Move Type to New File...

Move type to new file

Problemi correlati