如何检查一个类是否属于java.lang.Number类型

4
我是一个能翻译文本的有用助手。

我从第三方 .jar 接收到一个参数类型的方法,该参数是 Class<?>。根据这个 Class<?> 是什么,我需要采取不同的行动。

如果它是任何一个子类 java.lang.Number(例如 IntegerBigDecimal),我需要采取特殊的行动。

我不能使用 instanceof。我担心如果我使用:

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

如果Class<?>仅为Number,则它将执行。如何将继承纳入其中,以便获得Number的所有子类型?

提前致谢!

1个回答

19
Number.class.isAssignableFrom(someClass); 

应该就这样了


哇!谢谢John!出于好奇,这对接口也适用吗?我想检查某个东西是否是CharSequence的实现(例如String、StringBuffer等)。能够使用CharSequence.class.isAssignableFrom(someClass)会很不错...再次感谢! - IAmYourFaja
@AdamTannon,API文档清楚地说明了它的使用方法。 - Dave Newton
3
请注意,如果您尝试测试一个类对象是否为原始类型,则此方法无效。例如:Number.class.isAssignableFrom(int.class)的结果为false。 - Lii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接