Обгортання ланцюгових методів викликає окрему лінію в 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 neon): Коли я встановлюю Indent on column, це іноді додає додаткового простору; наприклад session.createQueryстає session .createQueryтощо. Повернення до параметра за замовчуванням розібрало проблему для мене.
Саян Пал

Це вставляє вкладку після першого виклику. Щоб цього уникнути, мені довелося встановити прапорець "Використовувати пробіли для відступу обернутих ліній" під відступом.
Даніель Нітзан

12

Вікно → Налаштування → Java → Стиль коду → Форматор → Редагувати → Обертання рядків → Ніколи не приєднуйтесь до вже завернутих рядків


3
Мені шкода, що я не пояснив: це не буде форматувати. Він просто не зіпсує це, якщо робити це вручну.
Op De Cirkel

Я зараз розумію. Eclipse насправді не може форматувати ланцюгові методи, але він збереже форматування так, як я його набрав. Дякую.
Йоганн

нічого специфічного для прикованих дзвінків. Якщо ви змусите функцію завершення виклику, вона завернеться скрізь
Op De Cirkel

@Johann Це невірно, Eclipse може відформатувати ланцюгові виклики методу.
Діпак Азад

@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

Вікно> Налаштування> Java> Стиль коду> Форматор> Редагувати> Обтікання рядків> Функціональні дзвінки, встановіть «Політика загортання рядків» як «Обернути всі елементи, кожен елемент у новому рядку».


Це покладе на новий рядок кожен виклик функції, навіть якщо вони не приковані, і якщо ви відформатуєте свій файл за допомогою Ctrl + Shift + f, це зіпсує все \
Op De Cirkel

1
Також доступні інші правила, наприклад, "Оберніть усі елементи, крім першого, якщо немає необхідності". Один з них повинен працювати для вас :)
Діпак Азад

7

Для тих, у кого налаштування форматування коду затемнення перевірені у контролі джерела (для послідовного форматування коду для всієї команди), .settingsпапка перевіряється.

Властивість, яка надасть вам цю поведінку форматування, знаходиться у .settings/org.eclipse.jdt.core.prefsфайлі.

Властивість:

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

3

Якщо ви готові виконати форматування цих сегментів самостійно, ви можете запобігти переформатування цих затемнень за допомогою:

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

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

Дивіться також: Як відключити формат коду Eclipse для певних розділів коду Java?


0

в: Вікно-> Налаштування-> Java-> Стиль коду-> Форматор-> Редагувати-> Обертання рядків-> Виклик функції-> Кваліфікований виклик

виберіть Політика відступу як відступ до стовпця


-1

Налаштуйте свій форматформа затемнення як у Java, так і в JavaScript. збільшити максимальну лінію, що відповідає вашому екрану.Windows> налаштування

Редагувати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.