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.

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


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


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'.


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


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


-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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.