2008-09-18 5 views
35

Ich Refactor Code oft zuerst durch Erstellen einer inneren Klasse innerhalb der Klasse Ich arbeite an - Wenn ich fertig bin, verschiebe ich das gesamte Ding in eine neue Klassendatei. Dies macht den Refactoring-Code in die neue Klasse extrem einfach, weil A) Ich habe nur mit einer einzigen Datei zu tun, und B) Ich erstelle keine neuen Dateien, bis ich eine ziemlich gute Idee des Namens/der Namen habe (Manchmal endet es als mehr als eine Klasse).Kann Eclipse extrahieren eine zweite Klasse in der Klassendatei in eine eigene Datei

Gibt es eine Möglichkeit, Eclipse kann mir mit dem letzten Schritt helfen? Ich sollte nur in der Lage sein zu sagen, welches Paket ich will die Klasse in, es kann den Dateinamen aus dem Klassennamen und das Verzeichnis aus dem Paket herausfinden.

Dies scheint wie ein trivialer Refaktor und wirklich offensichtlich, aber ich kann nicht die Tastenanschläge/Gesten/was auch immer, um es geschehen zu lassen. Ich habe versucht, Menüs, Kontextmenüs und Tastaturkürzel zu ziehen.

Wer weiß das?

[edit] Dies sind bereits "Top Level" -Klassen in dieser Datei, keine inneren Klassen, und "Move" scheint keine neue Klasse für mich erstellen zu wollen. Dies ist der harte Weg, den ich normalerweise mache - beinhaltet ausgehen, eine leere Klasse schaffen, zurückkommen und sich bewegen. Ich möchte das Ganze in einem Schritt machen.

Antwort

43

Es tut mir leid, dass ich vorher die falsche Antwort gegeben habe. Ich überprüfte, und es wollte nicht, dass du willst. Ich habe jedoch auch in 3.4 eine Lösung für Sie gefunden.

Markieren Sie die Klasse, kopieren Sie STRG-C oder schneiden Sie STRG-X, klicken Sie auf das Paket, in das die Klasse gehen soll, und fügen Sie STRG-V ein. Eclipse generiert automatisch die Klasse für Sie.

Convert Mitglied Typ auf Top Level funktioniert nicht ganz. Dadurch wird ein Feld der äußeren Klasse erstellt und ein Konstruktor generiert, der die äußere Klasse als Parameter verwendet.

+0

So nah . Das ist genau das, was ich will, aber Paste ist in dem Paket ausgegraut, wenn ich das tue. Ich frage mich, ob meine Version von Eclipse zu alt ist. 3.3.1.1? –

+0

Ich habe es gerade in 3.3 getestet und es hat funktioniert. Hmm ... vielleicht hast du es versäumt, die Klasse zu kopieren? – scubabbl

+2

Verstanden! Funktioniert nur im Package Explorer, nicht im Navigator. Vielen Dank! –

0

Kann in 2 Refactorings erfolgen:

  1. Convert Mitglied Typ Top-Level-

  2. Verschieben

1

Rechtsklick auf den Klassennamen (in der Quelltext) und wählen Sie Refactor -> Member Type in Top Level umwandeln. Sie können das Paket jedoch nicht auswählen.

28

in Eclipse 3.6 können Sie tun: Umgestalten -> Bewegungstyp

+0

das machte die Arbeit für mich, danke! –

+0

+1 Das war genau das, wonach ich suchte!Ich hatte gesucht "Eclipse extrahieren inneren Klasse in äußere Klasse", das war die erste Frage, die kam, und das war die genaue Antwort, die ich brauchte. Vielen Dank! – vergenzt

1

Für IntelliJ IDEA/Android Studio neue Datei: Umgestalten -> Verschieben -> Nach MyInnerClass innerer Klasse zum nächsthöheren Niveau

Verwandte Themen