
jdk5を利用しています。
特定のIFを持つenum定数が、複数あります。
例.IHogeをもつenum定数
public enum Hoge implements IHoge {
HOGE1(1),HOGE2(2),HOGE3(3);
private int no = 0;
private Hoge(int no) {this.no = no;}
/* IFのMethod */
public int getNo(){return no ;}
}
enum定数を使用して、下のような処理を行っています。
class A {
public void a(){
this.c.setClass(Hoge);
for(IHoge iHoge : Hoge.values()) {
this.setHogeX(iHoge.getNo());
}
}
public void b(){
//別のenum定数の処理
}
}
現在、enum定数毎に、別々のメソッドを用意して対応していますが、
処理が、全く同じな為、一つのメソッドにしたいと思っています。
IFを持つenum定数を、引数にしたいのですが、どのように記述すればよいか分りません。
public void a(Class<? extends Enum> hoge) {}
上の宣言だと、enum定数は通りますが、IFは渡せません。
本などを調べましたが、見つける事が出来ませんでした。
ご存知の方、ご教授よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
Enumを調べてる途中だったのでいろいろやってみました。
Class<? extends Enum>で試したら
中身なくなってClass型で実行されるみたいですね。
values()で中身を全部出して実行して見ました。
implementsがない場合はEnumで渡してMethodUtils.invokeMethodとか
で直接指定したら実行できるみたいですね。
System.out.println(MethodUtils.invokeMethod(fruit,"getLang",null));
以下、一様動きますJDK6だけど。
public class EnumExec {
public interface Fruit {
public String getLang();
}
public enum FruitEn implements Fruit {
Banana("Banana")
, Apple("Apple")
, Lemon("Lemon")
, Orange("Orange")
, Peach("Peach");
// メンバ変数の定義
private String name;
// コンストラクタの実装
private FruitEn (String name) {
this.name = name;
}
public String getLang() {
return name + "(en)";
}
}
public enum FruitJa implements Fruit {
Banana("バナナ")
, Apple("りんご")
, Lemon("レモン")
, Orange("オレンジ")
, Peach("ピーチ");
// メンバ変数の定義
private String name;
// コンストラクタの実装
private FruitJa (String name) {
this.name = name;
}
public String getLang() {
return name + "(ja)";
}
}
public void execute(Fruit[] fruits) {
for (Fruit fruit : fruits ) {
System.out.println(fruit.getLang());
}
}
/**
*
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
EnumExec lang = new EnumExec();
lang.execute(FruitJa.values());
lang.execute(FruitEn.values());
}
}
No.1
- 回答日時:
ちょっと質問の意味が読み取りづらいのですが、ご参考までに。
>public void a(Class<? extends Enum> hoge) {}
>上の宣言だと、enum定数は通りますが
通らないはずですが……?
>IFを持つenum定数を、引数にしたいのですが、どのように記述すればよいか分りません。
この一文から察する限りでは、もしかしたらお望みのものは単純に
public void a(IHoge hoge) {}
のような気がしないこともありません。コードの断片を示して頂いておいてなんですが、もう少し具体的な処理を示すと自分のエスパー能力をもちっと発揮できるような気もします。
ちなみに、"IF"とは制御構文の「if文」ではなく、インターフェイスのことでよろしいでしょうか?インターフェイスを"IF"と略すのは初めて見ました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GOF本のStrategyのJava版での質...
-
javaの同期について
-
Androidでこのエラーを解決した...
-
負の数を取得するには?
-
フェードアウト時にぶちっと画...
-
JWindow、JFrameでモーダル化の...
-
JComboBoxをsetEnabled以外でロ...
-
getConnection( )メソッドの戻り値
-
Jpanelへの描画について(初心者...
-
以下のコードのどこが問題なの...
-
アプレットでマウスイベントが...
-
C#で、定数をフラグ(if文)に...
-
引数について
-
actionListenerについて
-
デバッグ中の変数参照について
-
作成中のandroidアプリにタイマ...
-
HashMapのValue値更新管理について
-
内部クラスにする方法教えてく...
-
インターフェースを持つenum定...
-
多角形を動かす範囲を設定した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
C#で別のFormへ複数の値を返そ...
-
C# WinForm のDataGridView Cel...
-
C# visibleプロパティをfalseに...
-
C# 矢印キーの取得
-
C# MouseHoverを何度も呼ぶには
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
C#でキーイベントが発生しない...
-
C# DataGridView列カスタマイズ
-
C#から、C++で作成したdll内の...
-
画像ファイル操作方法
-
エンターキーを押すとOKボタン...
-
スレッド動かず
-
Java コレクション・ジェネリク...
-
なぜエラーになるのかがわかり...
-
マウスクリックで別のスレッド...
-
参照されない
おすすめ情報