Avvolgimento di chiamate di metodi concatenate su una riga separata in Eclipse per Java


105

Non sono riuscito a capire come avvolgere ogni chiamata di metodo Eclipse. Ad esempio, ho questo:

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

Ma lo voglio davvero:

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

Niente nella sezione "Line Wrapping" Eclipsesembra darmi questo risultato.

Risposte:


186

A complemento della risposta di Deepak Azad, ciò di cui hai esattamente bisogno è il seguente:

Windows : Finestra → Preferenze → Java → Stile codice
→ Formattatore → Modifica → A capo automatico (scheda)

Mac OS : ADT → Preferenze → Java → Stile codice
→ Formattatore → Modifica → A capo automatico (scheda)

Quindi, nell'elenco a sinistra, seleziona:

Chiamate di funzione → Chiamate qualificate

Ora sotto questo elenco, imposta i criteri di ritorno a capo su:

Avvolgi tutti gli elementi, tranne il primo elemento se non necessario

Controllare :

Forza la divisione, anche se la linea è più corta della larghezza massima della linea

Infine, imposta il criterio di indentazione su (grazie @Turbo ):

Rientro sulla colonna

Dovrebbe darti il ​​comportamento esatto che hai chiesto.


BONUS: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Preferenze ( Cmd +,) → Editor → Stile codice → Java → scheda Wrapping And Braces → Chained method calls

Selezionare

Avvolgi sempre

e controlla

Allinea quando multilinea


2
Grazie. Questo non funziona return new SomeClass().A().B().C();con ogni chiamata di metodo su una linea separata.
Harvey

1
@ ChristianGarcía +1 per l'ottima risposta. Una mia osservazione (Eclipse neon): quando set Indent on column, a volte aggiunge spazio extra; per esempio session.createQuerydiventa session .createQuerye così via. Il ripristino dell'opzione predefinita ha risolto il problema per me.
Sayan Pal

Questo inserisce una scheda dopo la prima chiamata. Per evitarlo, ho dovuto selezionare "Usa gli spazi per indentare le righe a capo" sotto Indentazione.
Daniel Nitzan,

12

Finestra → Preferenze → Java → Stile codice → Formatore → Modifica → A capo automatico → Non unire mai righe già mandate a capo


3
Mi dispiace non averlo spiegato: non lo formatterà. Semplicemente non rovinerà tutto, se lo fai manualmente.
Op De Cirkel

Ora capisco. Eclipse non può effettivamente formattare metodi concatenati ma manterrà la formattazione come l'ho digitata. Grazie.
Johann

niente di specifico per le chiamate concatenate. Se imposti il ​​wrapping delle chiamate di funzione, verrà eseguito il wrapping ovunque
Op De Cirkel

@Johann Questo non è corretto, Eclipse può formattare chiamate di metodi concatenate.
Deepak Azad

@OpDeCirkel Dovresti aggiungere il tuo commento nella risposta stessa. Rendi più facile per le persone notarlo: questo commentoI 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

Finestra> Preferenze> Java> Stile codice> Formatore> Modifica> Ritorno a capo linea> Chiamate di funzione, impostare il "Criterio di ritorno a capo" come "Avvolgi tutti gli elementi, ogni elemento su una nuova riga".


Questo metterà su una nuova riga ogni chiamata di funzione, anche se non sono concatenate, e se formatti il ​​tuo file con Ctrl + Maiusc + f, rovinerà tutto \
Op De Cirkel

1
Sono disponibili anche altre politiche, ad esempio "Avvolgi tutti gli elementi, tranne il primo elemento se non necessario". Uno di loro dovrebbe funzionare per te :)
Deepak Azad

7

Per coloro che hanno le impostazioni di formattazione del codice eclipse controllate nel controllo del codice sorgente (per una formattazione coerente del codice in tutto il team), la .settingscartella viene archiviata.

La proprietà che ti darà questo comportamento di formattazione è nel .settings/org.eclipse.jdt.core.prefsfile.

La proprietà è:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80


0

in: Window-> Preferences-> Java-> Code Style-> Formater-> Edit-> Line wrapping-> Function call-> Qualified invocation

seleziona Criterio di rientro come rientro nella colonna


-1

Personalizza il tuo formattatore eclipse sia in java che in javascript. aumentare la linea massima con quella adatta allo schermo.Windows> preferenze

modificare

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.