[解決済み] enumのordinalを使用するのは良い習慣ですか?
2022-03-04 13:36:19
質問
enumがあります。
public enum Persons {
CHILD,
PARENT,
GRANDPARENT;
}
を使用することに問題はないのでしょうか?
ordinal()
メソッドを使用して、enum メンバ間の階層をチェックできますか?つまり、冗長性を除いて、将来誰かが偶然に順序を変更することができる場合に、それを使用することの不利な点はありますか。
それとも、そのようなことをするのが良いのでしょうか。
public enum Persons {
CHILD(0),
PARENT(1),
GRANDPARENT(2);
private Integer hierarchy;
private Persons(final Integer hierarchy) {
this.hierarchy = hierarchy;
}
public Integer getHierarchy() {
return hierarchy;
}
}
解決方法は?
TLDR:ダメです。
のjavadocを参照してください。
ordinal
メソッドを
Enum.java
:
ほとんどのプログラマーは、このメソッドを使うことはないでしょう。 このメソッドは のような洗練された列挙型のデータ構造で使用するために設計されています。 として
java.util.EnumSet
とjava.util.EnumMap
.
まず - マニュアル(この場合はjavadoc)を読んでください。
第二に、もろいコードを書かないことです。enumの値は将来変更される可能性があり、あなたの2番目のコード例の方がよっぽど クリア そして 保守性 .
の間に新しい列挙型の値が挿入された場合、将来的に問題が発生することは間違いなく避けなければなりません。
PARENT
と
GRANDPARENT
.
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] 文字列の巻き方
-
[解決済み] Javaでdoubleをfloatに変換する
-
[解決済み] Enumのvalues()メソッドのドキュメントはどこにあるのでしょうか?