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

asc*_*sco 7 java

Object o = ?
if ((o instanceof Integer) || (o instanceof Double) || (o instanceof Float)|| (o instanceof Long))
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*rey 25

你可以做

if (o instanceof Number) {
    Number num = (Number) o;
Run Code Online (Sandbox Code Playgroud)

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

Class clazz = o.getClass();
if (Number.class.isAssignableFrom(clazz)) {
Run Code Online (Sandbox Code Playgroud)

注:此治疗Byte,Short,BigIntegerBigDecimal为数字.

如果您查看Javadoc for Integer,您可以看到它的父元素是Number,而它又具有子类,AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, DoubleAccumulator, DoubleAdder, Float, Integer, Long, LongAccumulator, LongAdder, Short因此instance Number将匹配其中任何一个.

  • `clazz`是班级的clazzic名字. (4认同)