Das Umschließen verketteter Methodenaufrufe in einer separaten Zeile in Eclipse für Java

105

Es ist mir nicht gelungen, herauszufinden, wie jeder Methodenaufruf eingepackt werden kann Eclipse. Zum Beispiel habe ich Folgendes:

someObject.A().B().C();

Aber ich möchte das wirklich:

someObject.A()
          .B()
          .C();

Nichts im Abschnitt "Zeilenumbruch" Eclipsescheint mir dieses Ergebnis zu liefern.

Johann
quelle

Antworten:

186

Als Ergänzung zu Deepak Azads Antwort benötigen Sie genau Folgendes:

Windows : Fenster → Einstellungen → Java → Codestil
→ Formatierer → Bearbeiten → Zeilenumbruch (Registerkarte)

Mac OS : ADT → Einstellungen → Java → Codestil
→ Formatierer → Bearbeiten → Zeilenumbruch (Registerkarte)

Wählen Sie dann in der Liste links Folgendes aus:

Funktionsaufrufe → Qualifizierte Aufrufe

Setzen Sie nun unter dieser Liste die Zeilenumbruchrichtlinie auf:

Wickeln Sie alle Elemente außer dem ersten Element ein, falls dies nicht erforderlich ist

Überprüfen Sie :

Teilen erzwingen, auch wenn die Linie kürzer als die maximale Linienbreite ist

Setzen Sie abschließend die Einrückungsrichtlinie auf (danke @Turbo ):

Einrückung in Spalte

Es sollte Ihnen das genaue Verhalten geben, nach dem Sie gefragt haben.


BONUS: Android Studio / IntelliJ Idee:

Mac OS : Android Studio → Einstellungen ( Cmd +,) → Editor → Codestil → Java → Registerkarte " Umbrechen und Klammern" → Verkettete Methodenaufrufe

wählen

Immer einwickeln

und prüfe

Bei Mehrzeiligkeit ausrichten

Christian García
quelle
2
Vielen Dank. Dies funktioniert nicht return new SomeClass().A().B().C();bei jedem Methodenaufruf in einer separaten Zeile.
Harvey
1
@ ChristianGarcía +1 für die tolle Antwort. Eine Beobachtung von mir (Eclipse Neon): Wenn ich einstelle Indent on column, fügt es manchmal zusätzlichen Platz hinzu; zum Beispiel session.createQuerywird session .createQueryund so weiter. Das Zurücksetzen auf die Standardoption hat das Problem für mich jedoch behoben.
Sayan Pal
Dies fügt nach dem ersten Aufruf eine Registerkarte ein. Um dies zu vermeiden, musste ich unter Einzug die Option "Leerzeichen zum Einrücken umbrochener Linien verwenden" aktivieren.
Daniel Nitzan
12

Fenster → Einstellungen → Java → Codestil → Formatierer → Bearbeiten → Zeilenumbruch → Verbinden Sie niemals bereits umbrochene Zeilen

Op De Cirkel
quelle
3
Es tut mir leid, dass ich nicht erklärt habe: Es wird nicht formatiert. Es wird es einfach nicht vermasseln, wenn Sie es manuell tun.
Op De Cirkel
Ich verstehe jetzt. Eclipse kann verkettete Methoden nicht formatieren, behält jedoch die Formatierung bei, wie ich sie eingegeben habe. Vielen Dank.
Johann
nichts spezielles für verkettete Anrufe. Wenn Sie das Umbrechen von Funktionsaufrufen erzwingen, wird es überall umbrochen
Op De Cirkel
@Johann Das ist nicht richtig, Eclipse kann verkettete Methodenaufrufe formatieren.
Deepak Azad
@OpDeCirkel Sie sollten Ihren Kommentar in die Antwort selbst einfügen. Machen Sie es den Menschen leichter, es zu bemerken: Dieser KommentarI am sorry i did not explain: It won't format it. It will simply not mess it up, if you do it manually. –
Sandeep Shukla
7

Fenster> Einstellungen> Java> Codestil> Formatierer> Bearbeiten> Zeilenumbruch> Funktionsaufrufe, setzen Sie die 'Zeilenumbruchrichtlinie' auf 'Alle Elemente umbrechen, jedes Element in eine neue Zeile'.

Deepak Azad
quelle
Dies wird bei jedem Funktionsaufruf eine neue Zeile setzen, auch wenn sie nicht verkettet sind, und wenn Sie Ihre Datei mit Strg + Umschalt + f formatieren, wird alles durcheinander gebracht \
Op De Cirkel
1
Es stehen auch andere Richtlinien zur Verfügung, z. B. "Alle Elemente mit Ausnahme des ersten Elements umbrechen, falls nicht erforderlich". Einer von ihnen sollte für Sie arbeiten :)
Deepak Azad
7

Für diejenigen, deren Eclipse-Code-Formatierungseinstellungen in der Quellcodeverwaltung aktiviert sind (für eine konsistente Code-Formatierung im gesamten Team), wird der .settingsOrdner eingecheckt.

Die Eigenschaft, die Ihnen dieses Formatierungsverhalten verleiht, befindet sich in der .settings/org.eclipse.jdt.core.prefsDatei.

Die Eigenschaft ist:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
Andy Guibert
quelle
3

Wenn Sie bereit sind, die Formatierung dieser Segmente selbst vorzunehmen, können Sie verhindern, dass Eclipse diese Segmente neu formatiert, indem Sie Folgendes verwenden:

// @formatter:off
...
// @formatter:on

Möglicherweise müssen Sie dies in Ihren Einstellungen aktivieren: http://archive.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part2.html#JavaFormatter

Siehe auch: Wie deaktiviere ich den Eclipse-Code-Formatierer für bestimmte Abschnitte des Java-Codes?

Stim
quelle
0

in: Fenster-> Einstellungen-> Java-> Codestil-> Formatierer-> Bearbeiten-> Zeilenumbruch-> Funktionsaufruf-> Qualifizierter Aufruf

Wählen Sie Einrückungsrichtlinie als Einzug in der Spalte aus

Shiv Krishna Jaiswal
quelle
-1

Passen Sie Ihren Eclipse-Formatierer sowohl in Java als auch in Javascript an. Erhöhen Sie die maximale Linie, die zu Ihrem Bildschirm passt.Windows> Einstellungen

Bearbeiten

Jajikanth pydimarla
quelle