web-dev-qa-db-ja.com

流暢なインターフェースパターンをEclipseで「正しく」インデントする方法は?

いくつかの流暢なインターフェース用のジェネレーターを作成しました。今、私はこのように見えるたくさんのコードを持っています:

new MyFluentInterface()
    .setFirst( "first" )
    .setSecond( "second" )
    .setThird( "third" )
    .invoke( obj );

上に示したインデントが好きですが、これを正しくインデントするようにEclipseを構成する方法が見つかりません。

Eclipseは常に次のようにインデントします。

new MyFluentInterface()
.setFirst( "first" )
.setSecond( "second" )
.setThird( "third" )
.invoke( obj );

最初のコード例に示すように、この流暢なインターフェースパターンをインデントするようにEclipseを構成するにはどうすればよいですか?

53
tangens

Eclipse 3.6では、これはカスタムJava>コードスタイル>フォーマッタープロファイルを構成することで実行できるようです。それを編集して行の折り返しタブに移動し、関数呼び出し>修飾された呼び出しを選択します-)。次に、修飾された呼び出しの設定で、次のように構成します。

alt text

これにより、期待される結果が得られます(すべきです)。

SomeEntity e1 = new SomeEntity.Builder()
    .age(10)
    .amount(10.0d)
    .firstname("foo")
    .lastname("bar")
    .build();

しかし、これは明らかにすべてのコードに影響し、私は個人的には好きではありません。だから私はEclipse3.6からの新しい オフ/オンタグ を使用しています(プロファイルを編集するときの最後のタブ):

alt text

そして、私が望むようにフォーマットされない部分を囲み、自分でそれを行います:

// @formatter:off
SomeEntity e2 = new SomeEntity.Builder()
    .age(10)
    .amount(10.0d)
    .firstname("foo")
    .lastname("bar")
    .build();
// @formatter:on

あなたの毒を選んでください:)

66
Pascal Thivent