2011-06-21 9 views
3

私はEnumをとるメソッドを持っています。メソッドの名前はmethodName(MyTypes)で、MyTypesは別のクラスの中にあります。 Data{ enum MyTypes{ Id, Value.... } }反射を使ってStringからEnumを構築する

このメソッドを動的に呼び出す必要があります。それを呼び出すには、入力文字列からMyType型のエミュムを構築する必要があります。入力文字列は、たとえばMyTypes.Valueです。 この文字列からenumインスタンスを動的に構築し、メソッドを渡すにはどうすればよいですか?

私はmethod.getGenericParameterTypeをしています()それは私にこの ような何かを返す[クラスpackagename.Data $ MyTypes]

列挙型を構築するためにどのようにジェネリック型と文字列値を必要なこの2つのことを使用していますか?

ありがとうございます。

+0

を使用して列挙型の値を取得し、その後、その後、Class.forName(String)を使用して、実際のクラスオブジェクトを取得し、クラス名「MyTypes」を取得するために文字列を解析?あなたに十分なData.MyTypes.valueOf(テキスト)か、あなたに私たちに言わなかった理由の反映が必要ですか?反射でもそれを得ることができます。たとえば、enumクラスの名前がパラメータである場合など、このクラスが必要になることがあります。 – aalku

+0

この答えを見て、それはあなたと私が望んでいたものです。 http://stackoverflow.com/a/3735968/2881350 –

答えて

5

String text = 
MyType myType = MyType.valueOf(text); 
+0

ピーターに感謝しました。 –

1

リフレクションを使用する理由はありますか? valueOfメソッドは十分ではありませんか?

thisをご覧ください。

+1

これはタイプが動的である場合に適しています。あなたが望むタイプを知っているなら、あなたは 'MyEnum.valueOf(String)'を使うことができます –

+0

正解、ソー反射ですので、enumタイプも動的であると思いました。あなたの答えに+1してください。 – ddewaele

3

そのような何か:あなたはリフレクションを使用する必要がないのはなぜ静的Enum.valueOf(Class,String)

+0

ありがとうございました。 –

関連する問題