0

私はXMLで次のようなものを定義しました:

<Property>
   <value>APPLE</value>
   <enum>com.mycompany.MyEnum</enum>
</Property>

その列挙型をコードでインスタンス化しようとします。これが私がこれまでに持っているものです

Class<?> clazz = Class.forName(pProperty.getEnum());
if (!clazz.isEnum())
   throw new IllegalArgumentException(MessageFormat.format("Class %s is not an enumeration.", pProperty.getEnum()));

その後、valueOf(java.lang.String)を呼び出そうとしましたが、NoSuchMethodExceptionが発生しました

MyEnum は次のように定義されます。

package com.mycompany;
public enum MyEnum
{
   APPLE, PEER, LEMON
}

それは可能ですか?

ありがとう

4

3 に答える 3

1

それがあなたの言いたいことかどうかはわかりませんが、APPLEで説明されている列挙型からのような列挙型定数を取得したい場合<enum>com.mycompany.MyEnum</enum>は、このようなことを試すことができます

@SuppressWarnings("rawtypes")
Class clazz = Class.forName("com.mycompany.MyEnum");
if (clazz.isEnum()) {
    @SuppressWarnings("unchecked")
    Enum<?> o = Enum.valueOf(clazz, "PEER");
    System.out.println(o.name());
    System.out.println(o.ordinal());
}
于 2013-10-28T16:50:53.340 に答える
0

これは私のために働いた:

clazz.getMethod("valueOf", String.class).invoke(null, "APPLE")
于 2013-10-28T16:32:08.777 に答える