2010-11-18 1 views
3

Ich war aufräumen Code und passierte auf com.example.StringHelper, die 6 oder 7 public static Methoden (zum Beispiel concatStrings(String...), aber keine Mitgliedsfelder. Es gab eine Reihe von Klassen Unterklasse dieser Klasse nur so, dass sie anrufen konnten concatStrings(str1, str2) ohne es mit der Klasse voranstellen wie so:.. StringHelper.concatStrings(str1, str2)Inline alle statischen Importe in Eclipse

ich habe sie gerade deshalb eine Klasse nicht will Subklassen, so brach ich ein Bündel aus klebte ich den folgenden statischen Import in den oberen Rand einer beliebigen Datei Subklassifizieren es nach dem Entfernen der extends StringHelper:

import static com.example.StringHelper.*; 

Eclipse vereinfachte dies in spezifische Importe für nur die verwendeten Methoden.

Frage: Gibt es eine einfache Möglichkeit, Eclipse "inline" diese statischen Importe zu haben? Kann ich es bekommen, den tatsächlichen statischen Import zu entfernen und jedem Anruf mit StringHelper. voranzukommen?

Hinweis Dies ist ein vereinfachtes konstruiertes Beispiel, so wenden Sie sich bitte über nicht beschweren, warum wir einen String in erster Linie brauchen.

Antwort

4

Dies wird es tun:

  • Markieren Sie einen Aufruf von concatStrings(). Stellen Sie sicher, dass die Klammern in die Hervorhebung eingefügt werden. Wählen Sie Refactor/Extract Method, nennen Sie es foo. Stellen Sie sicher, dass Sie die Option "47 zusätzliche Vorkommen von Anweisungen mit Methode ersetzen" aktivieren.
  • Fügen Sie in Ihrer neuen foo-Methode "StringHelper" hinzu. Präfix für den Aufruf von concatStrings
  • entfernen Sie den Import statische
  • Do Umgestalten/Inline los foo zu bekommen und stellen Sie Ihre statischen Anrufe zurück, wo sie hingehören, zusammen mit ihren glänzenden neuen Präfixe.
+0

Wenn ich concatStrings auswähle und "Methode extrahieren ..." wähle, bekomme ich ein Popup mit der Meldung "Kann keinen einzigen Methodennamen extrahieren". –

+0

Sie müssen auch die Klammern auswählen, nicht nur den Methodennamen. –

1

Weiß nicht, ob es einen automatischen Weg gibt, aber ich denke, kann es in einer manuellen Weise helfen. Löschen Sie den Import und klicken Sie dann auf jede Zeile mit einem Fehler. Drücken Sie ctrl-1 für 'Schnellkorrektur' und wählen Sie die Schnellkorrektur, die dem Paketnamen vorangestellt ist, anstatt einen Import hinzuzufügen.

+0

Danke, aber ich glaube nicht, das schnelle Lösung weiß über die Klasse, aus der es stammt, wenn ich den statischen Import lösche. Unabhängig davon wäre ein Find-Replacement für jede Methode wahrscheinlich schneller (manche Klassen verwenden eine Methode 20 Mal). –

0
Preferences -> Java -> Code Style -> Organize Imports 

Dort können Sie konfigurieren, wie viele Importe erforderlich sind, um sie zu gruppieren.

+0

Ich beschwere mich nicht, dass es die StringHelper. * Statische Importlinie in eine für jede der 3 Methoden bricht. Ich frage, ob ich Eclipse bekommen kann, um die statischen Import-Zeilen komplett zu entfernen und stattdessen den Methodenaufruf mit StringHelper voranzutreiben. –

+0

Ah, meine Entschuldigung. – Jeremy

0

Einstellungen> Java> Code-Style> Organisieren Importe:

"Anzahl der statischen Importen benötigt. *" Gesetzt, dies zu 1.