lunedì 1 agosto 2011

Convertire le classi nidificate / anonime in classi di livello superiore utilizzando il refactoring di Eclipse

da Byron


Le classi nidificate, ad es. classi anonime, spesso sono più convenienti rispetto alla creazione di classi separate, soprattutto quando si lavora con qualcosa come il modello di comando o listener di eventi. Per esempio:
JButton button = nuovo JButton ();
button.addActionListener ( nuovo ActionListener () {
@ Override
pubblico void actionPerformed (ActionEvent e) {
/ / ... Fare qualcosa di utile
}
});

Ma arriva un momento in cui la classe annidata diventa così ingombrante che il codice diventa illeggibile. E a volte si vuole riutilizzare la stessa classe in un altro luogo - qualcosa che sia difficile, con classi interne anonime.

La risposta potrebbe essere quella di cambiare la classe annidata in una classe pubblica di livello superiore (o di un cittadino di prima classe, se preferite) che esiste nel proprio file (es. SomethingUsefulActionListener.java ). Ma facendo questo manuale può prendere un sacco di tempo ed è soggetto ad errori.

Eclipse ha un paio di refactoring e soluzioni rapide che contribuiscono a rendere il lavoro molto più facile. Convertire una classe interna anonima a una classe di livello superiore richiede due refactoring solo e si prende un paio di secondi, invece di minuti. A (di nome), classe interna richiede solo un refactoring. E il passaggio di argomenti per la nuova classe è anche facile se si utilizzano alcune delle correzioni rapide di Eclipse.

Convertire la classe interna anonima in un livello superiore

Convertire una classe interna anonima in una classe di livello superiore prende 2 refactoring principali: Convertire ad una classe annidata e poi convertire la classe annidata a una classe di livello superiore. Se si dispone di una classe annidata (cioè una classe denominata interna), allora basta iniziare a punto 4.

Qui ci sono le istruzioni, ma c'è anche un video qui sotto con un esempio veloce.

1. Convertire la classe anonima interna a una classe nidificata in piedi sulla costruzione della classe anonima 'e scegliendo Refactor> Converti in classe anonima per nidificati ... (o Alt-T, O ). Un dialogo che richiede per i dettagli classe annidata apparirà.

2. Inserire un nome per la nuova classe annidata, selezionare pubblico come la visibilità e deselezionare Dichiarare il tipo nidificato come definitiva .

3. Fare clic su Ok. Eclipse sarà creare una nuova classe nidificato all'interno della classe contenitrice e lasciare la chiamata al costruttore dove la classe anonima utilizzata da dichiarare.

4. Ora convertire la classe annidata in una classe di livello più alto da in piedi sul nome della classe e scegliendo Refactor> Converti tipo di membri di primo livello ...(o Alt-T, V ). Un dialogo che richiede per il nome dell'istanza allegando apparirà.

5. (Facoltativo) Se si desidera accedere alla classe racchiude all'interno nuova classe, quindi immettere un nome per il campo che verrà assegnato alla classe. Io di solito lasciare vuoto.

6. Fare clic su Ok. Eclipse sarà creare la nuova classe ( UsefulAction.java ) e spostarlo in un nuovo file nello stesso pacchetto.

Ecco un breve video per mostrare come ciò sia facile. Nell'esempio, avremo convertire una interna anonima ActionListener classe per una classe chiamataUsefulAction.java .

Il passaggio di argomenti dalla classe racchiude nella nuova classe

Che dire quando la classe annidata accessi campi nella classe racchiude? Come si fa a ottenere facilmente i campi privati ​​della classe racchiude nella nuova classe di livello superiore?

Non c'è un one-shot modo per farlo, ma ci sono tecniche per farlo andare un po 'più veloce. Un trucco è attraverso le seguenti fasi:

  1. Prima di tutto assicuratevi che hai creato una classe chiamata annidata (passi 1-3).
  2. Copia e incolla i campi pertinenti privati ​​della classe racchiude nella classe annidata.
  3. Generazione automati di un costruttore per la classe annidata in base ai campi appena copiato ( Alt + Shift + S, O ).
  4. passare L'errore costruttore ( Ctrl +. ) in cui viene creata un'istanza della classe annidata e aggiungere i campi al costruttore.

Il modo più semplice per vedere come funziona è quello di guardare il seguente video. In questo esempio, io passo i campi nome e l'indirizzo per la nuova classe.

Corso Java - Corsi Java - Corsi programmazione Java

Corso programmazione Android - Certificazione Android

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.