Перенос связанных вызовов методов в отдельную строку в Eclipse для Java


105

Мне не удалось понять, как обернуть каждый вызов метода Eclipse. Например, у меня это:

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

Но я очень хочу этого:

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

Ничто в разделе «Перенос строк», Eclipseкажется, не дает мне такого результата.

Ответы:


186

В дополнение к ответу Дипака Азада вам точно понадобится следующее:

Windows : Окно → Настройки → Java → Стиль кода
→ Форматирование → Редактировать → Перенос строк (вкладка)

Mac OS : ADT → Настройки → Java → Стиль кода
→ Форматирование → Редактировать → Перенос строк (вкладка)

Затем в списке слева выберите:

Вызов функций → Квалифицированные вызовы

Теперь под этим списком установите для политики переноса строк значение:

Оберните все элементы, кроме первого, если не нужно

Проверить :

Принудительное разделение, даже если линия короче максимальной ширины линии

Наконец, установите для политики отступов значение (спасибо @Turbo ):

Отступ столбца

Он должен дать вам точное поведение, о котором вы просили.


БОНУС: Android Studio / IntelliJ Идея:

Mac OS : Android Studio → Настройки ( Cmd +,) → Редактор → Стиль кода → Java → вкладка Обтекание и фигурные скобки → Связанные вызовы методов

Выбрать

Заворачивать всегда

и проверьте

Выровнять при многострочном


2
Спасибо. Это не работает для return new SomeClass().A().B().C();каждого вызова метода в отдельной строке.
Харви

1
@ ChristianGarcía +1 за отличный ответ. Одно мое наблюдение (неон Eclipse): когда я устанавливаю Indent on column, иногда добавляется дополнительное пространство; например session.createQueryстановится session .createQueryи так далее. Однако возврат к параметру по умолчанию решил проблему для меня.
Sayan Pal

Это вставляет вкладку после первого вызова. Чтобы этого избежать, мне пришлось установить флажок «Использовать пробелы для отступа в строках с переносом» в разделе «Отступ».
Даниэль Ницан,

12

Окно → Настройки → Java → Стиль кода → Форматировщик → Редактировать → Перенос строк → Никогда не объединять уже перенесенные строки


3
Простите, что не объяснил: форматирование не выполняется. Это просто не испортит, если вы сделаете это вручную.
Op De Cirkel

Теперь я понимаю. На самом деле Eclipse не может форматировать связанные методы, но он сохранит форматирование в том виде, в каком я его ввел. Спасибо.
Johann

ничего особенного для связанных вызовов. Если вы принудительно запустите перенос вызова функции, он будет переноситься повсюду
Op De Cirkel

@Johann Это неверно, Eclipse может форматировать связанные вызовы методов.
Deepak Azad

@OpDeCirkel Вы должны добавить свой комментарий в самом ответе. Сделайте так, чтобы людям было легче это заметить: Этот комментарийI am sorry i did not explain: It won't format it. It will simply not mess it up, if you do it manually. –
Сандип Шукла

7

Window> Preferences> Java> Code Style> Formater> Edit> Line wrapping> Function Calls, установите «Политика переноса строк» ​​как «Переносить все элементы, каждый элемент на новую строку».


Это будет помещать новую строку при каждом вызове функции, даже если они не связаны, и если вы отформатируете свой файл с помощью Ctrl + Shift + f, это все испортит \
Оп Де Сиркель

1
Также доступны другие политики, например, «Обернуть все элементы, кроме первого, если не требуется». Один из них должен работать на вас :)
Deepak Azad

7

Для тех, у кого настройки форматирования кода eclipse проверены в системе управления версиями (для согласованного форматирования кода во всей команде), .settingsпапка проверяется.

Свойство, обеспечивающее такое поведение форматирования, находится в .settings/org.eclipse.jdt.core.prefsфайле.

Имущество:

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

3

Если вы хотите выполнить форматирование этих сегментов самостоятельно, вы можете предотвратить переформатирование этих сегментов в eclipse, используя:

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

Возможно, вам потребуется включить это в своих предпочтениях: http://archive.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part2.html#JavaFormatter

См. Также: Как отключить средство форматирования кода Eclipse для определенных разделов кода Java?



-1

Настройте модуль форматирования eclipse как на java, так и на javascript. увеличьте максимальную строку, соответствующую вашему экрану.Windows> настройки

редактировать

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.