Envolvimento de chamadas de métodos encadeados em uma linha separada no Eclipse para Java

105

Não tenho tido sucesso em descobrir como envolver cada chamada de método Eclipse. Por exemplo, eu tenho este:

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

Mas eu realmente quero isso:

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

Nada na seção "Quebra de linha" Eclipseparece me dar esse resultado.

Johann
fonte

Respostas:

186

Complementando a resposta de Deepak Azad, o que você precisa exatamente é o seguinte:

Windows : Janela → Preferências → Java → Estilo de código
→ Formatador → Editar → Quebra de linha (guia)

Mac OS : ADT → Preferências → Java → Estilo de código
→ Formatador → Editar → Quebra de linha (guia)

Em seguida, na lista à esquerda, selecione:

Chamadas de função → invocações qualificadas

Agora, abaixo desta lista, defina a política de quebra de linha para:

Envolva todos os elementos, exceto o primeiro elemento, se não for necessário

Verifique :

Força a divisão, mesmo se a linha for menor que a largura máxima

Por fim, defina a política de recuo para (obrigado @Turbo ):

Recuar na coluna

Deve fornecer o comportamento exato que você pediu.


BÔNUS: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Preferências ( Cmd +,) → Editor → Estilo de código → Java → guia Encapsulamento e colchetes → Chained method calls

selecionar

Embrulhar sempre

e verificar

Alinhar quando multilinha

Christian García
fonte
2
Obrigado. Isso não funciona return new SomeClass().A().B().C();com cada chamada de método em uma linha separada.
Harvey
1
@ ChristianGarcía +1 pela ótima resposta. Uma observação minha (Eclipse neon): Quando me ponho Indent on column, às vezes adiciona espaço extra; por exemplo, session.createQuerytorna session .createQuery- se e assim por diante. No entanto, reverter para a opção padrão resolveu o problema para mim.
Sayan Pal
Isso insere uma guia após a primeira chamada. Para evitá-lo, tive que marcar "Usar espaços para recuar linhas quebradas" em Recuo.
Daniel Nitzan
12

Janela → Preferências → Java → Estilo de código → Formador → Editar → Quebra de linha → Nunca junte linhas já quebradas

Op De Cirkel
fonte
3
Lamento não ter explicado: não vai formatar. Simplesmente não vai atrapalhar, se você fizer isso manualmente.
Op De Cirkel
Agora eu entendo. O Eclipse não pode formatar métodos encadeados, mas manterá a formatação conforme eu digitei. Obrigado.
Johann
nada específico para chamadas em cadeia. Se você forçar o encapsulamento da chamada de função, ele encapsulará em todos os lugares
Op De Cirkel
@Johann Incorreto, o Eclipse pode formatar chamadas de método encadeadas.
Deepak Azad
@OpDeCirkel Você deve adicionar seu comentário na própria resposta. Faça com que seja mais fácil para as pessoas perceberem: Este comentárioI 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

Janela> Preferências> Java> Estilo de código> Formador> Editar> Quebra de linha> Chamadas de função, defina a 'Política de quebra de linha' como 'Quebra todos os elementos, cada elemento em uma nova linha'.

Deepak Azad
fonte
Isso colocará em uma nova linha cada chamada de função, mesmo se elas não estiverem encadeadas, e se você formatar seu arquivo com Ctrl + Shift + f, vai bagunçar tudo \
Op De Cirkel
1
Outras políticas também estão disponíveis, por exemplo, "Envolva todos os elementos, exceto o primeiro elemento se não for necessário". Um deles deve funcionar para você :)
Deepak Azad
7

Para aqueles que têm configurações de formatação de código eclipse verificadas no controle de origem (para formatação de código consistente em toda a equipe), a .settingspasta é verificada.

A propriedade que fornecerá esse comportamento de formatação está no .settings/org.eclipse.jdt.core.prefsarquivo.

A propriedade é:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
Andy Guibert
fonte
0

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

selecione a política de recuo como recuo na coluna

Shiv Krishna Jaiswal
fonte
-1

Personalize o seu formatador Eclipse em java e javascript. aumente a linha máxima com que se ajuste à sua tela.Windows> preferências

Editar

Jajikanth Pydimarla
fonte