检查对象是否是任何数字的实例'类?

时间:2015-01-20 10:09:16

标签: java

Object o = ?
if ((o instanceof Integer) || (o instanceof Double) || (o instanceof Float)|| (o instanceof Long))

是否有更短的版本来检查对象是否是任何数字类型?

1 个答案:

答案 0 :(得分:19)

你可以做到

if (o instanceof Number) {
    Number num = (Number) o;

如果你只有班级,你可以做

Class clazz = o.getClass();
if (Number.class.isAssignableFrom(clazz)) {

注意:这会将ByteShortBigIntegerBigDecimal视为数字。

如果您查看Javadoc for Integer,则可以看到其父级Number,其父级为AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, DoubleAccumulator, DoubleAdder, Float, Integer, Long, LongAccumulator, LongAdder, Short,因此instance Number将匹配其中任何一个。< / p>