2010-06-25 13 views
7

Aşağıdaki kodlarım var ve şimdi bir türüm var, ancak türün örneğin String olup olmadığını ve daha sonra dizeler için işlem yapıp yapmadığını anlamak için bir tür anahtarlamaya ihtiyacım var. Peki, t türünün String türünde olup olmadığını nasıl kontrol edebilirim?Yansıma ile Java'daki türleri nasıl karşılaştırabilirim?

Type t = bean.getClass().getDeclaredField(fieldName).getType(); 

cevap

10

Bir ad denetimi mi yoksa nesne tabanlı bir kontrol mi yapmak istiyorsunuz? ClassType uygular yana

, aslında doğrudan gitmek ve Mesela String.class karşı eşittir yapabilirsiniz: (t.equals (String.class))

Ancak, sen esaslı bir çek yapmak istiyorsanız adında, daha sonra, t sınıfın bir örneğidir, olup olmadığını kontrol edin ve sonra Class'a yazın, tam tür adını edinin ve karşılaştırın.

+1

Aslında 'Field.getType() ','Sınıfını döndürür ve bu şekilde gitmek güvenlidir. – laura

+0

Huh ... Bu ilginç. JavaDocs'a bakmalıydım. İlkellerin sebebi ne yapar? – Uri

+2

Primitifler, aslında sınıflar olmasa da, bunlarla ilişkili bir Sınıf nesnesine sahiptir. Sınıf i = int.class; ' – ILMTitan