前提・実現したいこと
現在javaでゲーム関係のGUIを作っています。
その中のある場面で、プレイヤーは以下のような入力を求めらる予定です。
(1) 0 ~ 10個の整数を入力する
(1)0 ~ 10のどれか一つの整数を入力する
または
(2) 独立したボタン「A」「B」「C」「D」のどれかを押す
この入力を処理するメソッドを現在書いているのですが、
(1)は整数型、(2)は列挙型のようなデータなので、
戻り値をどのように管理すれば良いか悩んでおります。
###試したこと
私がこれまで考えた実装方法としては、
・intを戻り値にしてABCDを例外化
→ABCDは別にエラーなどの例外的な操作ではないし、try-catchが長い
・intを戻り値にしてABCDに例外値(-1,-2,-3,-4)を設ける
・Objectを戻り値にしてenum / int を返却する
→設計として問題無いのか?
・すべてenumで管理する
→整数に対応する値を手動で何個も作る必要がある
・interfaceを作り、enum + Integerで管理する
###enumで管理した場合
java
1enum Action{ 2 OPERATION_A(-1), 3 OPERATION_B(-1), 4 OPERATION_C(-1), 5 OPERATION_D(-1), 6 INPUT_0(0), 7 INPUT_1(1), 8 ... 9 INPUT_10(10); 10 private final int number; 11 Action(int number){ 12 this.number = number; 13 } 14}
この場合(1)を10行書くとなる点が気になります。
10行程度なら書けなくもないので、今回の場合は上のようなコードでも対応できる気もしますが、
整数の入力が0 ~ 50のような場合だったらこれは現実的ではないと思いました。
###interfaceで管理した場合
java
1interface Action{ 2 enum Operation implements Action{ 3 A, B, C, D 4 } 5 class InputAction implements Action{ 6 private final int number; 7 InputAction(int number){ 8 this.number = number; 9 } 10 int getNumber(){ 11 return number; 12 } 13 } 14}
利用する側でキャストが必要になる点が気になりますが、
これが現状考えうる最善なのですが、他にスマートな方法があるのか気になります。
どのような方法が良いかアドバイスをいただけると幸いです。
よろしくおねがいします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/28 06:15
2018/08/28 06:24
退会済みユーザー
2018/08/28 06:30
2018/08/28 06:33
退会済みユーザー
2018/08/28 06:35