今天在做项目的时候有一个需求:

    需要将Object对象(原型为包装类型的对象)转换成long或者Long类型,该包装类一般指Integer、Short

    常规做法是将Object转换为原始类型,然后强制转型为long。但是这样做会有很多instanceof和强制转型的代码。

    比较简单而且简洁的做法:

    1、将Object的值序列化成String对象,然后在将String对象装换成long或Long值。缺点是无法装换浮点型。**

    1. public static long test(Object obj){
    2. Assert.notNull(obj);
    3. return Long.parseLong(obj.toString());
    4. }

    2、向上转型为Number类型,再进行强转。

    1. public static long test(Object obj){
    2. if (obj instanceof Number){
    3. Number num = (Number) obj;
    4. return num.longValue();
    5. }
    6. throw new IllegalArgumentException();
    7. }