2012-01-23 19 views
21

olup olmadığını nasıl kontrol ederim java.lang.reflect.Type örneğinin bir Emum nesnesini temsil edip etmediğini kontrol etmek istiyorum.java.lang.reflect.Type bir Enum

type == String.class // works 

ama bu numaralandırma sınıf için çalışmaya görünmüyor:

Ben kullanarak belirli bir sınıfın örneği olup olmadığını kontrol edebilirsiniz == karşılaştırmalar örneğin

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

.. Bu, örneklemin belirli bir enum olacağı için mantıklıdır, ancak türün herhangi bir enum için olup olmadığını kontrol etmek isterim.

birisi() sizin için yapacak

+3

Class.isEnum nesi()? – aviad

+0

İlkel türleri desteklediğinden, Type nesnesini kullanıyorum. IsEnum() öğesini arayabilmek istiyorum ama Type nesnesinde yok – Edd

+0

yorumunuzu anlayamadı. Sınıf Türü uygular. – aviad

cevap

30
if(type instanceof Class && ((Class<?>)type).isEnum()) 
+1

Teşekkürler, açık bir şey olacağını biliyordum – Edd

7

Class.isEnum memnun Tipi bir enum olup olmadığını söylesem de söylemesem nasıl bana bariz açıklayabilir. Oracle Doc

+0

daha spesifik olabilir misiniz, bu – Edd

+0

uygulamak için lütfen örnek 'type.isEnum() 'çevirir. – towi

1

Neden karşılaştırmalar bu tip karşılaştırmak için .equals yöntemini kullanmayın için

bakın. == çoğunlukla ilkel türler için kullanılır. veya belki kendi sınıflarınızı karşılaştırmanız gerekir.

type.equals(MyClass.class) 
+0

eşittir yöntemi Enum.class – Edd

+0

ile çalışmış gibi görünmüyor. Bence ikinci öneri işe yarayacak ama herhangi bir enum ile çalışmam gerekiyor ... sadece açıkça tanımlanmış olanlar değil – Edd

0
if(type instanceof Class && (Class)type.getClass().isEnum()) {...} 
+0

type.getClass() 'class' döndürüyor ve değil benim enum – Edd

+0

Sınıf – aviad

+0

no'lu oyuncuyu çalıştırmayı denediniz evet ... Korkarım ki zaten bu Jtahlborn bunu önerdi. Çabalarınız için teşekkürler – Edd