![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?e8efa67)
はじめまして。
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?e8efa67)
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の終了
-
FocusLostでイベント処理を中断...
-
JSP、サーブレットの初期処理
-
アコーディオンメニューをアン...
-
イベントとリスナーに関すること
-
ProgressBarが0%から動きません
-
PHPでDB処理中にプログレスバー...
-
Threadについて
-
[Java] while(true)の意味
-
演算子について
-
Javaアプリケーション実行の返...
-
SwingUtilities.invokeLater(ne...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
EXCEL VBAにて動的にCheckBOXを...
-
private static という変数の修飾
-
【sendkeysメソッドが動かずに...
-
変数の参照でエラーが出てしま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
JavaScriptからJAVAクラスを呼...
-
Javaでのデバッグコード削除
-
WPF C#でF10のイベント取得方法...
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
Javaプログラムからポップアッ...
-
JavaでVBのDOEVENTSと同様の処...
-
JSP、サーブレットの初期処理
-
switch文の中に、throws new Ex...
-
ExcelVBA で文字列の特定の文字...
-
VBScriptでのWord印刷
-
ラジオボタンの選択判定
-
Javaアプリケーション実行の返...
-
C#で別スレッドの終了を知りたい
-
ftp 同時複数接続の負荷テスト...
-
ブラウザを閉じた後のサーバ側...
-
javaのプログラムが止まる
-
[Java] while(true)の意味
おすすめ情報