参考文章:
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
思路:
- 无可厚非先要创建目标对象,指定目标数据类型
- 调用目标对象的添加元素方法(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;
}
}
- 在必要的时候使用这个转换工具,传入类.class参数
//3、可能存的不是List<Express>对象,没法转换
if (object instanceof List){
//不安全,用自定义的工具转换
expressList = new ObjectToList<Express>().objToList(object, Express.class);
}