[解決済み] enumとswitch文の組み合わせによるJava
質問
この質問に似たようなSOのQ&Aをいろいろ見てみましたが、解決策が見つかりませんでした。
私が持っているのは、TVガイドを表示するさまざまな方法を表すenumです...
NDroidでは
Application
クラス
static enum guideView {
GUIDE_VIEW_SEVEN_DAY,
GUIDE_VIEW_NOW_SHOWING,
GUIDE_VIEW_ALL_TIMESLOTS
}
...ユーザーがビューを変更したとき、イベントハンドラは
int
を受け取るので、このような処理を行いたいと思います。
アンドロイドで
Activity
onClick(DialogInterface dialog, int which)
イベントハンドラ
// 'which' is an int from 0-2
switch (which) {
case NDroid.guideView.GUIDE_VIEW_SEVEN_DAY:
...
break;
}
私はC#のenumとselect/caseステートメントに慣れていて、上記のようなことが可能です。
私は
if
ステートメントに頼らなければならないのでしょうか?選択肢は3つしかないだろうからできるけど、Javaのswitch-caseではどうなんだろうと思って。
EDIT Javaの一般的な問題として見ていたため、問題を完全に展開できていなくて申し訳ありません。もう少し詳しく説明するために、質問に追加しました。
Android 固有のものはないので、Android としてタグ付けしなかったのですが、enum は
Application
クラスで定義されており、私がスイッチを必要とするコードは
Activity
. 複数のアクティビティからアクセスする必要があるため、列挙型は静的です。
どのように解決するのですか?
あなたが見落としている部分は、整数からタイプセーフなenumへの変換です。 Javaは自動的にそれを行いません。 これには2つの方法があります。
- タイプセーフの列挙型ではなく、静的な最終的な int のリストを使用し、受け取った int 値で切り替えます (これは Java 5 より前のアプローチです)。
-
指定された id 値のいずれかをオンにする (これは
によって説明された
のように) または enum 値の序数値; すなわち
guideView.GUIDE_VIEW_SEVEN_DAY.ordinal()
-
int値で表されるenum値を決定し、enum値のスイッチを入れる。
enum GuideView { SEVEN_DAY, NOW_SHOWING, ALL_TIMESLOTS } // Working on the assumption that your int value is // the ordinal value of the items in your enum public void onClick(DialogInterface dialog, int which) { // do your own bounds checking GuideView whichView = GuideView.values()[which]; switch (whichView) { case SEVEN_DAY: ... break; case NOW_SHOWING: ... break; } }
を書くと、より便利でエラーが起こりにくいと感じるかもしれません。
valueOf
実装を書いた方が、より便利でエラーが起こりにくいと思うかもしれません。
関連
-
[解決済み】Java:サブクラス下のenumでswitchステートメントを使用する
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] Pythonのswitch文の代用品?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
強制型変換について
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
maven レポート エラー 解決不可能な親POM
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
Zipファイルの圧縮・解凍にantを使用する
-
[解決済み】enumの値をintに変換する方法は?