Eclipse for Javaの別の行でチェーンされたメソッド呼び出しをラップする


105

各メソッド呼び出しをでラップする方法を理解することに成功していませんEclipse。たとえば、私はこれを持っています:

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

しかし、私は本当にこれが欲しい:

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

の「行の折り返し」セクションにEclipseは、この結果が表示されないようです。

回答:


186

Deepak Azadの答えを補足すると、次のものが正確に必要です。

ウィンドウ:ウィンドウ→設定→Java→コードスタイル
→フォーマッタ→編集→行の折り返し(タブ)

Mac OS:ADT→設定→Java→コードスタイル
→フォーマッタ→編集→行の折り返し(タブ)

次に、左側のリストで次を選択します。

関数呼び出し→修飾された呼び出し

このリストの下で、行の折り返しポリシーを次のように設定します。

必要でない場合は最初の要素を除くすべての要素をラップします

チェック

線が最大線幅より短い場合でも強制分割

最後に、インデントポリシーを(thanks @Turbo)に設定します。

列のインデント

要求したとおりの動作が得られるはずです。


ボーナス:Android Studio / IntelliJ Idea:

Mac OS:Android Studio→Preferences(Cmd +,)→Editor→Code Style→Java→ Wrapping And Braces tab→Chained method calls

選択する

常にラップ

そしてチェック

複数行に揃える


2
ありがとう。これはreturn new SomeClass().A().B().C();、個別の行での各メソッド呼び出しでは機能しません。
Harvey

1
@ChristianGarcía+1すばらしい答え。私からの1つの観察(Eclipseネオン):を設定するとIndent on column、時々余分なスペースが追加されます。たとえばにsession.createQueryなるsession .createQueryなど。デフォルトのオプションに戻すと、問題が解決しました。
Sayan Pal

これにより、最初の呼び出しの後にタブが挿入されます。それを避けるために、インデントで「スペースを使用して折り返された行をインデントする」をチェックする必要がありました。
Daniel Nitzan

12

ウィンドウ→設定→Java→コードスタイル→フォーマッタ→編集→行の折り返し→既に折り返された行を結合しない


3
説明しなかったのは残念です。フォーマットされません。手動で行っても、それが台無しになることはありません。
Op De Cirkel、2011年

わかりました。Eclipseはチェーンされたメソッドを実際にフォーマットすることはできませんが、入力したとおりのフォーマットを保持します。ありがとう。
ヨハン

連鎖呼び出しに固有のものはありません。関数呼び出しのラッピングを強制すると、あらゆる場所でラップされます
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. –
Sandeep Shukla

7

[ウィンドウ]> [設定]> [Java]> [コードスタイル]> [フォーマッタ]> [編集]> [行の折り返し]> [関数呼び出し]で、[行の折り返しポリシー]を[すべての要素を折り返し、すべての要素を新しい行に含める]に設定します。


これにより、チェーンされていなくても、すべての関数呼び出しが新しい行に配置され、Ctrl + Shift + fでファイルをフォーマットすると、すべてが台無しになります\
Op De Cirkel

1
他のポリシーも利用できます。たとえば、「必要でない場合、最初の要素を除いてすべての要素をラップします」。それらの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

参照: Javaコードの特定のセクションでEclipseコードフォーマッタをオフにする方法


0

で:ウィンドウ->設定-> Java->コードスタイル->フォーマッタ->編集->行の折り返し->関数呼び出し->修飾された呼び出し

列のインデントとしてインデントポリシーを選択します


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.