[解決済み] Java enumとpublic static finalフィールドを持つクラスとでは、どのような利点がありますか?
質問
私はC#に非常に精通していますが、Javaでより多くの仕事をするようになりました。私は、Javaの列挙型は基本的にC#のそれと同等であることを学ぶと思っていましたが、どうやらそうではなさそうです。当初、私はJavaの列挙型が複数のデータピースを含むことができることを知り、非常に有利に思えたので興奮しました( http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html ). 例えば、enum 要素に特定の値を簡単に割り当てることができ、その結果、それなりの労力をかけずに整数を enum に変換することができます (すなわち 整数値を一致するJava Enumに変換する ).
そこで質問ですが、public static final フィールドをたくさん持つクラスよりも、Java enum の方が何か利点があるのでしょうか?それとも、よりコンパクトな構文が提供されるだけでしょうか?
EDIT: もっとはっきりさせましょう。たくさんのpublic static finalフィールドを持つクラスに対するJava enumsの利点は何でしょうか? 同じ型の ? 例えば、最初のリンクにある惑星の例では、これらの公開定数を持つクラスに対するenumの利点は何でしょう。
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
これを満たすのは、私の知る限り、casablancaさんの回答だけです。
どのように解決するのですか?
技術的には、enum を型付き定数の束を持つクラスとみなすことができますし、実際、enum 定数は内部でどのように実装されているかがわかります。内部的には
enum
しかし、便利なメソッド (
Enum javadoc
のような、自分で実装しなければならないようなものです。
Enum.valueOf
.
関連
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] Java 8のmap()メソッドとflatMap()メソッドの違いは何ですか?
-
[解決済み] JavaにおけるSoftReferenceとWeakReferenceの違いは何ですか?
-
[解決済み] Javaにおける "final class "の意味とは?
-
[解決済み] Javaリフレクションを用いた静的なプライベートfinalフィールドの変更
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み】静的初期化ブロック