Eclipseフォーマッターがすべての列挙型を1行に配置しないようにする方法


106

私は次のような列挙型を持っています:

public static enum Command
{
login,
register,
logout,
newMessage
}

ファイルをフォーマットすると、出力は次のようになります。

public static enum Command 
{
login, register, logout, newMessage
}

1
各列挙型変数を別々の行に強制するための外部フォーマッター(org.eclipse.jdt.core.formatter ......)に変数はありますか?
Paramesh Korrakuti、2018年

回答:


198

@wjansによる回答は、通常の列挙型ではうまくいきましたが、引数を持つ列挙型ではうまくいきませんでした。彼の答えを少し拡張するために、Eclipse Junoで私にとって最も賢明なフォーマットを提供する設定を次に示します。

  1. Window> Preferences> Java> Code Style>Formatter
  2. クリック Edit
  3. Line Wrappingタブを選択します
  4. enum宣言ツリーノードを選択します
  5. に設定Line wrapping policyするWrap all elements, every element on a new line (...)と、括弧内に3 of 3と表示されます。
  6. チェックを外すForce split, even if line shorter than maximum line width (...)と、括弧内に3 of 3と表示されます。
  7. Constantsツリーノードを選択します
  8. 小切手 Force split, even if line shorter than maximum line width

これにより、ツリーノードを除く列挙ツリーノードの3つのサブノードが同じ折り返しポリシーと同じ強制分割ポリシーConstantsに設定されるため、引数を持つ列挙型はそれぞれ独自の行でフォーマットされます。引数は、最大行幅を超えた場合にのみ折り返されます。

例:

@wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(
        0,
        255,
        0),
    RED(
        255,
        0,
        0)
}

上記の解決策:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(0, 255, 0),
    RED(255, 0, 0)
}

1
私のEclipseプレビューアではまだ間違っているように見えますが、実際のソースで試してみると、それは魅力のように機能しました。ありがとう。
Ben Thurley 2013年

50

これはフォーマッターの設定で指定できます:

  • 設定:Java-コードスタイル-フォーマッター
  • 編集をクリックします
  • 「行の折り返し」タブを選択します
  • 左側のボックスで「列挙型」宣言->定数を選択します
  • 行折り返しポリシーを「すべての要素、すべての要素を新しい行に折り返す」に設定します
  • 「強制分割...」をチェックします

私は何ヶ月もこの問題を抱えていました。私が試さなかったのは「強制分割」でした。「すべての要素をラップする」とは実際にはすべての要素をラップすると思うので、なぜそれが必要なのかわからない!解決策をありがとう。
LegendLength 2017年

11

これも少し見苦しいですが、会社のポリシーでフォーマッターを変更できない場合は、折り返したくない行の終わりにコメントを追加できます。

public static enum Command 
{
    login,//
    register,//
    logout,//
    newMessage//
};

5

それはいいことではありませんが、コードの一部のセクションでEclipseフォーマッターをオフにすることができます...

// @formatter:off
public static enum Command {
    login,
    register,
    logout,
    newMessage
};
// @formatter:on

このオプションは、Windows-> Preferences-> Java-> Code Style-> Formatter-> Edit-> Off / On Tagsパネルにあります


1
これは機能します... コンパイラーはエラーと見なします。コメントにそれらを入れると、// @formatter:off
Bob

4

「定数」の列挙型宣言で行折り返しポリシーを設定する必要があります。

ラッピングポリシーを

  • すべての要素を改行してすべての要素を折り返す

そして

  • 「ラインがより短い場合でも、強制的に分割する」というボックスをチェックします。

0

最新のEclipse 2018.9を追加するだけ

  1. Window > Preferences > Java > Code Style > Formatter - Edit
  2. 展開Line Wrappingツリーノードを。
  3. 拡大する Wrapping settings
  4. 拡大する 'enum' declaration
  5. 編集ConstantsおよびConstant arguments

定数はである必要がありますWrap all elements, every element on a new line。定数引数はである必要がありますWrap where necessary

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