牛骨文教育服务平台(让学习变的简单)
博文笔记

Java 如何将List<实体类> 转为List<Object>类型

创建时间:2017-01-19 投稿人: 浏览次数:13110

因在写通用方法时有个需求,要将List<实体类> 转为List<Object>类型,这样方便统一处理。


于是就想当然的这么强转(Student为实体类):

List<Student> list = new ArrayList<Student>();
List<Object> objList = (List<Object>)list;

然而报错:Cannot cast from List<Student> to List<Object>。

好吧,然后把代码改一下遍历一个一个转了:

import java.util.ArrayList;
import java.util.List;


public class ObjectList {
	public static void main(String[] args) {
		List<Student> list = new ArrayList<Student>();
//		List<Object> objList = (List<Object>)list;	//Cannot cast from List<Student> to List<Object>
		List<Object> objList = toObject(list);
	}
	
	static public <E> List<Object> toObject(List<E> list){
		List<Object> objlist = new ArrayList<Object>();
		for(Object e : list){
			Object obj = (Object)e;
			objlist.add(obj);
		}
		return objlist;
	}
}

有木有哪位好汉解释下,这个报错具体是为啥??

----------------------------------------------------------------------------------------------------------------------------tag

思考了好长时间,看了下java编程思想关于泛型的部分,有一丁点启发吧,不知道对错:

List<Object> 这里面的类型Object并不是一个泛型,也不是作为一个所有类型的父类,仅仅只是一个具体的Object类而已,所以arrayList集合中实体的类型必须要是Object类型才行。而如果把List<Object>改为泛型List<T>的话就完美解决,它可以允许arrayList集合种类型为类和类型而无限制。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。