![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?5a7ff87)
はじめまして。
J2SE5.0で導入されたenumキーワードですが、
http://oshiete1.goo.ne.jp/qa2252664.htmlの質問で定義方法は把握できたのですが、実際にどういったプログラムで使用するのでしょうか?
いまいち実用性がイメージできないのでお願いします。
No.2ベストアンサー
- 回答日時:
曜日、月、年号などで使用されそうですね。
例えば、カレンダーで
static final int Monday = 0;
static final int Tuesday = 1;
:
static final int Sunday = 6;
とあったとします。
これを使うクラスで、
int week;
:
Switch (week) {
Case 6:
//処理1
break;
Case 5:
//処理2
break;
defaule:
//処理3
}
というコードがあったとして、「これが何をしているか」が直感的には分かりづらいと思いませんか?
WeekNameというenumを定義した場合(定義内容は省略します)
WeekName week;
:
Switch (week) {
Case Sunday:
//処理1
Case Saturday:
//処理2
default:
//処理3
}
これなら、「土曜、日曜、それ以外で処理を変えている」というのがすぐに分かると思います。
また、曜日を格納する変数weekCodeを作った場合
int weekCode = 7;
さて、weekCodeは何曜日でしょうか?
このような値の代入を防ぐためのコードをいちいち書く必要がでます。
enumだとこのような値の代入はできません。
さらに言うと、上のコードでstatic finalな曜日の値を0から始めましたが、1から始める人もいるかもしれません。
また、月曜を始めにしましたが、日本のカレンダーの表記通りにすると、
日曜から始まるケースもあり、Sundayが0になります。
ただ、「文法的には」どちらでも問題ないので、このクラスを使う側が注意しないといけなくなります。
当然、バグが生まれやすくなります。
enumなら、Sundayは日曜であり、月曜にはなりません。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?5a7ff87)
No.1
- 回答日時:
良くあるパターンでは曜日を設定するときにstatic finalではなくenumにしておけば、次を求めたり入るものを規定できるので規定外値を防いだりできます。
参考URL:http://www.02.246.ne.jp/~torutk/javahow2/enum.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- その他(パソコン・周辺機器) 同じソフトを共有する 1 2022/06/17 19:08
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- その他(パソコン・周辺機器) 2つのPCを行き来する 2 2022/06/15 01:59
- 日本語 格助詞「に」の意義について 1 2022/03/28 17:37
- 日本語 「人」と「名」の使い分け 8 2022/05/26 21:59
- その他(ブログ) テレグラムをブログに埋め込むことはできますか? 1 2022/06/04 11:20
- Excel(エクセル) Excel ユーザー定義で変換したセルについて 3 2023/02/04 01:25
- ライブ・コンサート・クラブ サマソニ(幕張)マリンスタジアム入場待機時のトイレについて 2 2022/08/14 15:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
Eclipseの終了処理について
-
重たい処理のタイムアウト強制終了
-
WPF C#でF10のイベント取得方法...
-
Javaでのデバッグコード削除
-
javaのプログラムが止まる
-
ローカル変数にアクセスする複...
-
サブルーチンってどういうこと?
-
数値の定数を付ける時
-
複数の条件分岐の仕方
-
Jquery,JSON,Ajax,PHP連携
-
「プログラミング」JAVAの...
-
C#で別スレッドの終了を知りたい
-
データファイルの読み込みについて
-
コンパイラとインタプリタとア...
-
Tomcat高負荷時の設定について
-
無限ループをわざと作って時計...
-
ラジオボタンの選択判定
-
PHPでDB処理中にプログレスバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
Javaプログラムからポップアッ...
-
SwingUtilities.invokeLater(ne...
-
Javaでのデバッグコード削除
-
Tomcat高負荷時の設定について
-
JavaScriptからJAVAクラスを呼...
-
データ未入力時のエラー処理が...
-
アコーディオンメニューをアン...
-
ブラウザを閉じた後のサーバ側...
-
[Java] while(true)の意味
-
数値の定数を付ける時
-
Javaアプリケーション実行の返...
-
ラジオボタンの選択判定
-
onBlurとonFocusの処理順序につ...
-
スレッド1とスレッド2を交互に...
-
WPF C#でF10のイベント取得方法...
-
flush()メソッドについて・・・
-
ExcelVBA で文字列の特定の文字...
-
無限ループをわざと作って時計...
おすすめ情報