今天在做项目的时候有一个需求:
需要将Object对象(原型为包装类型的对象)转换成long或者Long类型,该包装类一般指Integer、Short
常规做法是将Object转换为原始类型,然后强制转型为long。但是这样做会有很多instanceof和强制转型的代码。
比较简单而且简洁的做法:
1、将Object的值序列化成String对象,然后在将String对象装换成long或Long值。缺点是无法装换浮点型。**
public static long test(Object obj){Assert.notNull(obj);return Long.parseLong(obj.toString());}
2、向上转型为Number类型,再进行强转。
public static long test(Object obj){if (obj instanceof Number){Number num = (Number) obj;return num.longValue();}throw new IllegalArgumentException();}
