eclipse 3.7で列挙型のソート値を無効にする方法はありますか?列挙型のエントリの順序に依存しているので、並べ替えるたびに首が壊れます。列挙型フィールド内でソートしないでください
enum X {C,B,A}
は、ソートメンバーを打った後にenum X {A,B,C}
になります。
eclipse 3.7で列挙型のソート値を無効にする方法はありますか?列挙型のエントリの順序に依存しているので、並べ替えるたびに首が壊れます。列挙型フィールド内でソートしないでください
enum X {C,B,A}
は、ソートメンバーを打った後にenum X {A,B,C}
になります。
のWindows>設定>ジャワ>エディタ>保存アクション>追加 アクション]> [設定]>メンバー>ソートメンバー>選択し
または
"フィールド と列挙型の定数を無視"ウィンドウ>設定>のJava>コードスタイル>クリーンアップ>編集>コードの整理>メンバー>ソートメンバー>
「をフィールドと列挙型の定数を無視」を選択しかし、あなたが本当にないコードに基づいて必要がありますenumが宣言された順。それは単に間違っている。
しかし、それはコードを整理するのに役立つかもしれません。ですから+1とありがとうございます。 – Gangnus
列挙型エントリの順序に依存しないでください。これは対処するよりも多くのバグを引き起こします。
列挙型の順序に依存するようにコーディングすると、enumクラスのordinal()
関数(intを返す)を暗黙的に呼び出しています。これには以下の欠点があります。
ordinal()
戻り値に到達する必要があります。代わりに、適切にそのような値を含むようにあなたの列挙型を展開します。
public enum Departments {
SALES(101),
ACCOUNTING(200),
MANAGEMENT(300);
private final int deptNumber;
Departments(int number) {
deptNumber = number;
}
public int departmentNumber() {
return deptNumber;
}
}
私は位置依存コードに頼っているのは良い考えだとは思わない。 Enums
はJavaのクラスと考えることができるので、あなたは特定のIDを定義しないでください。
enum Enum
{
A(0),
B(1),
C(2);
public final int id;
Enum(int id) { this.id = id; };
}
これはずっと安全です。
もっと明示して、いくつかのコード例を追加できますか? –
Enum.values()は、宣言された順にそれらを返します。これは宣言の順序を変更するコードの書式設定に問題がありますか? – Thomas
ecpliseのコードフォーマッタは、宣言の順序を変更します。無効にしたいものです。 –