2

私の列挙型-

public enum Foo {A, B, C}

public enum Bar {A("aaa"), B("bbb"), C("ccc")}

実行時に私が持っているのは、列挙型クラス名、つまり「Foo」だけです

私はこれをします -

Class<?> c = Class.forName(getClassName()) // local function 

使用してArrays.asList(c.getEnumConstants())取得します -

フー -

[A, B, C]

バー -

[aaa, bbb, ccc]

[A, B, C]評価時にも欲しいですBar

.values()私が欲しいものですが、明示的なキャストなしで動的に取得するにはどうすればよいですか?

返信ありがとうございます。

解決策を見つけました -

List<? extends Enum<?>> enums = (List<? extends Enum<?>>) Arrays.asList(c.getEnumConstants());
for (Enum<?> e: enums) {
    System.err.println("e.name: " + e.name());
}
4

2 に答える 2

0

Bar定数を取得する際に、次のコードを使用できます。

List<Bar> list = Arrays.asList(c.getEnumConstants());
List<String> list1 = new ArrayList<String>();
for (Bar b : list)
{
   list1.add(b.name());
}
System.out.println(list1);
于 2013-08-15T11:58:06.453 に答える