Перенос связанных вызовов методов в отдельную строку в 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 → Стиль кода → Форматировщик → Редактировать → Перенос строк → Никогда не объединять уже перенесенные строки

Op De Cirkel
источник
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?

Стим
источник
0

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

выберите политику отступов как отступ в столбце

Шив Кришна Джайсвал
источник
-1

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

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

Джаджикантх Пидимарла
источник