72

クラスが列挙型かどうかを知りたいのですが、何か足りないと思います:

if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);

Enum.class が無効であるというエラーが表示されます。では、クラスが Enum かどうかを確認するにはどうすればよいでしょうか? それを判断することは可能だと確信していますが、私はそれを取得できません。

ありがとう

4

2 に答える 2

150

正しい構文は次のとおりです。

Enum.class.isAssignableFrom(test.MyEnum.class)

ただし、列挙型の場合は、より便利な方法を次に示します。

if (someObject.getClass().isEnum()))

更新: 本体を持つ列挙型アイテム (メソッドをオーバーライドするものなど) の場合、これは実際には機能しません。その場合は、

if (someObject instanceof Enum<?>)

参照:

于 2010-11-12T16:03:48.690 に答える
14

Java 5 の新機能について話している場合enum (実際にはあまり新しい機能ではありません)、次のようにします。

if (obj.getClass().isEnum()) {

...
}

がカスタム クラスの場合Enumは、それを確認してくださいobj instanceof Enum

于 2010-11-12T16:03:45.197 に答える