[解決済み] enumとは何か、なぜ有用なのか?
質問
今日、このサイトでいくつかの質問を見ていたら、「Space」「Space」「Space」「Space」の3つについて言及されているのを発見しました。
enum
シングルトンパターンで使用されている
スレッドセーフの利点について。
私はこれまで
enum
を、私はもう2年以上Javaでプログラミングしています。そしてどうやら、彼らは大きく変わったようです。そして、どうやら彼らは大きく変わったようで、今では自分たちの中で本格的にOOPをサポートしています。
さて、日常的なプログラミングでenumを使う理由や注意点は何でしょうか?
どのように解決するのか?
変数 (特にメソッドのパラメータ) が少数の可能な値のセットから 1 つだけを取ることができる場合は、常に列挙型を使用する必要があります。例えば、型定数(契約状態:"permanent", "temp", "apprentice" )やフラグ("execute now", "defer execution" )のようなものである。
整数(または文字列コード)の代わりに列挙型を使用すると、コンパイル時のチェックが強化され、無効な定数の受け渡しによるエラーを回避できるほか、どの値を使用するのが正当であるかを文書化できます。
ところで、列挙型を使いすぎると、メソッドの処理量が多くなりすぎるかもしれません(1つのメソッドが複数のフラグを受け取って処理内容を変更するよりも、いくつかの独立したメソッドを持つ方が良い場合が多いです)。しかし、フラグや型コードを使用しなければならない場合は、列挙型を使用することをお勧めします。
例として、どちらが良いのでしょうか?
/** Counts number of foobangs.
* @param type Type of foobangs to count. Can be 1=green foobangs,
* 2=wrinkled foobangs, 3=sweet foobangs, 0=all types.
* @return number of foobangs of type
*/
public int countFoobangs(int type)
対
/** Types of foobangs. */
public enum FB_TYPE {
GREEN, WRINKLED, SWEET,
/** special type for all types combined */
ALL;
}
/** Counts number of foobangs.
* @param type Type of foobangs to count
* @return number of foobangs of type
*/
public int countFoobangs(FB_TYPE type)
のようなメソッド呼び出し。
int sweetFoobangCount = countFoobangs(3);
とすると、次のようになります。
int sweetFoobangCount = countFoobangs(FB_TYPE.SWEET);
2番目の例では、どの型が許されるかがすぐにわかり、ドキュメントと実装がずれることはなく、コンパイラがこれを強制することができます。 また、以下のような無効な呼び出しは
int sweetFoobangCount = countFoobangs(99);
はもう無理です。
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
IDEA パッケージステートメントの欠落
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] Mavenスナップショットとは何か、なぜそれが必要なのか?
-
[解決済み] volatileキーワードは何に役立つのでしょうか?
-
[解決済み] Goでenumを表現する慣用的な方法は何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
ファインバグタイプ
-
final, finally, finalizeの違いについて話してください。
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
JSPで「リストが型解決できない!」の解決方法
-
[解決済み】Javaでシングルトンパターンを実装するための効率的な方法は何ですか?[クローズド]