Envolviendo llamadas a métodos encadenados en una línea separada en Eclipse para Java


105

No he tenido éxito en averiguar cómo envolver cada llamada de método Eclipse. Por ejemplo, tengo esto:

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

Pero realmente quiero esto:

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

Nada en la sección "Ajuste de línea" Eclipseparece darme este resultado.

Respuestas:


186

Para complementar la respuesta de Deepak Azad, lo que necesita exactamente es lo siguiente:

Windows : Ventana → Preferencias → Java → Estilo de código
→ Formateador → Editar → Ajuste de línea (pestaña)

Mac OS : ADT → Preferencias → Java → Estilo de código
→ Formateador → Editar → Ajuste de línea (pestaña)

Luego, en la lista de la izquierda, seleccione:

Llamadas a funciones → Invocaciones calificadas

Ahora, debajo de esta lista, configure la política de ajuste de línea en:

Envuelva todos los elementos, excepto el primer elemento si no es necesario

Comprobar :

Forzar división, incluso si la línea es más corta que el ancho máximo de línea

Finalmente, establezca la política de sangría en (gracias @Turbo ):

Sangría en la columna

Debería darle el comportamiento exacto que solicitó.


BONIFICACIÓN: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Preferencias ( Cmd +,) → Editor → Estilo de código → Java → pestaña Envoltura y llaves → Llamadas a métodos encadenados

Seleccione

Envolver siempre

y comprobar

Alinear cuando es multilínea


2
Gracias. Esto no funciona return new SomeClass().A().B().C();con cada llamada de método en una línea separada.
Harvey

1
@ ChristianGarcía +1 por la gran respuesta. Una observación mía (neón de Eclipse): cuando configuro Indent on column, a veces agrega espacio extra; por ejemplo se session.createQueryconvierte en session .createQueryy así sucesivamente. Sin embargo, volver a la opción predeterminada solucionó el problema.
Sayan Pal

Esto inserta una pestaña después de la primera invocación. Para evitarlo, tuve que marcar "Usar espacios para sangrar las líneas ajustadas" en Sangría.
Daniel Nitzan

12

Ventana → Preferencias → Java → Estilo de código → Formateador → Editar → Ajuste de línea → Nunca unir líneas ya envueltas


3
Lamento no haberle explicado: no lo formatea. Simplemente no lo estropeará, si lo hace manualmente.
Op De Cirkel

Ahora entiendo. En realidad, Eclipse no puede formatear métodos encadenados, pero conservará el formato tal como lo he escrito. Gracias.
Johann

nada específico de las llamadas encadenadas. Si fuerza el
ajuste de la

@Johann Eso no es correcto, Eclipse puede formatear llamadas a métodos encadenados.
Deepak Azad

@OpDeCirkel Debes agregar tu comentario en la propia respuesta. Facilite que la gente lo note: Este comentarioI 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

Ventana> Preferencias> Java> Estilo de código> Formateador> Editar> Ajuste de línea> Llamadas a funciones, configure la 'Política de ajuste de línea' como 'Envuelva todos los elementos, cada elemento en una nueva línea'.


Esto pondrá en una nueva línea cada llamada de función, incluso si no están encadenadas, y si formatea su archivo con Ctrl + Shift + f, estropeará todo \
Op De Cirkel

1
También hay otras políticas disponibles, por ejemplo, "Ajustar todos los elementos, excepto el primer elemento si no es necesario". Uno de ellos debería funcionar para usted :)
Deepak Azad

7

Para aquellos que tienen la configuración de formato de código de eclipse registrada en el control de fuente (para un formato de código coherente en todo el equipo), la .settingscarpeta está registrada.

La propiedad que le dará este comportamiento de formato está en el .settings/org.eclipse.jdt.core.prefsarchivo.

La propiedad es:

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


0

en: Ventana-> Preferencias-> Java-> Estilo de código-> Formateador-> Editar-> Ajuste de línea-> Llamada a función-> Invocación calificada

seleccione la política de sangría como sangría en la columna


-1

Personalice su formateador de eclipse en java y javascript. aumente la línea máxima con la que se ajuste a su pantalla.Windows> preferencias

Editar

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.