1

列挙型を使用して基本的なステート マシンを実装したいと考えています。列挙型は、許可された状態遷移を管理するためのインターフェイスを実装します。しかし、インターフェイスを実装し、特定のコンテキストで使用する必要がある列挙型のクラス名のリストをプロパティ ファイルで構成したいと考えています。コンテキストは実行時に決定され、そのコンテキスト キーはプロパティ ファイル内のプロパティ キーにマップされます。プロパティ ファイルからコンテキストの列挙型のクラス名を取得したら、そのクラス名を使用してインスタンス参照を取得し、インターフェイス メソッドを介してその列挙型を使用するにはどうすればよいですか? リフレクションを使用して特定の列挙型の属性を検出できることがわかりますが、それだけです。何か案は?

4

3 に答える 3

1

私はこれを書きました...それはあなたを助けるかもしれません:

public class MyTests {

  static enum XX implements Runnable {
    A, B;
    public void run() {
      System.out.println( "I'm enum value: " + this.name() );
    }
  }

  public static void main( String[] args ) throws Exception {
    new MyTests();
  }

  public MyTests() throws Exception {
    Class<?> loaded = Class.forName("MyTests$XX");
    Class<? extends Runnable> xx = loaded.asSubclass(Runnable.class);
    Runnable[] enumConstants = xx.getEnumConstants();
    for ( Runnable runnable : enumConstants ) {
      runnable.run();
    }
  }

}

これは印刷されます:

I'm enum value: A
I'm enum value: B
于 2013-06-25T21:28:12.507 に答える