2012-01-15 115 views
4

我正在從屬於方法參數類型的第三方.jar提供Class<?>。我需要根據這個Class<?>的實際情況採取不同的行動。如何檢查一個類是否爲java.lang.Number類型

如果是java.lang.Number的子類(如IntegerBigDecimal)的任何東西,我需要採取特殊的行動。我不能使用instanceof。我怕,如果我使用:

Class<?> someClass = getParameterTypeFrom3rdParty(); 
if(someClass == Number.class) 
    // ... 

那麼如果Class<?>只有一個Number它將執行。我怎樣才能把繼承融合到混合中,這樣我得到了Number的所有子類型?

在此先感謝!

回答

14
Number.class.isAssignableFrom(someClass); 

這應該做的伎倆

+0

哇!謝謝約翰!出於好奇,這是否也適用於接口?我想檢查是否有CharSequence的impl(如String,StringBuffer等)。能夠使用CharSequence.class.isAssignableFrom(someClass)會很好......再次感謝! – IAmYourFaja 2012-01-15 16:23:10

+0

不客氣。是的,它也適用於接口 – 2012-01-15 16:24:15

+0

@AdamTannon [API文檔](http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAssignableFrom%28java.lang.Class% 29)清楚地說明它是如何使用的。 – 2012-01-15 16:24:55

相關問題