web-dev-qa-db-ja.com

Java.lang.reflect.Typeが列挙型であるかどうかを確認する方法

Java.lang.reflect.TypeインスタンスがEmumオブジェクトを表しているかどうかを確認したいと思います。

==比較を使用して、特定のクラスのインスタンスであるかどうかを確認できます。例:

type == String.class // works

しかし、これはEnumクラスでは機能しないようです。

type == Enum.class // doesn't work

...インスタンスは特定の列挙型であるため、これは理にかなっていますが、タイプが任意の列挙型用であるかどうかを確認したいと思います。

タイプが列挙型であるかどうかを見分ける方法を誰かが私に明白に説明してもらえますか?

24
Edd
if(type instanceof Class && ((Class<?>)type).isEnum())
36
jtahlborn

Class.isEnum()がそれを行います。

Oracle Doc を参照してください

8
Sunil

このタイプの比較を比較するために.equalsメソッドを使用してみませんか。 ==は主にプリミティブ型に使用されます。

type.equals(Enum.class)

または多分あなたはあなた自身のクラスを比較する必要があるでしょう。

type.equals(MyClass.class)
1
Yusuf K.
if(type instanceof Class && (Class)type.getClass().isEnum()) {...}
0
aviad