【转载】如何优雅的将Object转换成List

参考文章:
https://www.cnblogs.com/xianz666/p/14003517.html

用到但不了解的:

Class.cast()方法,看源码似乎也是强转

   @SuppressWarnings("unchecked")
    public T cast(Object obj) {
        if (obj != null && !isInstance(obj))
            throw new ClassCastException(cannotCastMsg(obj));
        return (T) obj;
    }
————————————————
版权声明:本文为CSDN博主「说我什么才好」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/axzsd/article/details/79206172

思路:

  1. 无可厚非先要创建目标对象,指定目标数据类型
  2. 调用目标对象的添加元素方法(List就是add(),Map就是push())

/**
 * Object到List的转换工具
 * @param <T> 泛型,目前只有Express
 */
public class ObjectToList<T> {

    //泛型方法,不指定“一定是将Object转成XX类型的List”
    public List<T> objToList(Object object, Class<T> cl){
        //最后返回的List
        List<T> list = new ArrayList<T>();
        //判断Object是不是ArrayList
        if (object instanceof ArrayList<?>){
            for (Object o: (List<?>) object) {
                list.add(cl.cast(o));//cast方法需要了解更多
            }
            return list;
        }
        return null;
    }
}
  1. 在必要的时候使用这个转换工具,传入类.class参数
//3、可能存的不是List<Express>对象,没法转换
            if (object instanceof List){
                //不安全,用自定义的工具转换
                expressList = new ObjectToList<Express>().objToList(object, Express.class);
            }