因在写通用方法时有个需求,要将List 转为List类型,这样方便统一处理。
于是就想当然的这么强转(Student为实体类):
List list = new ArrayList();
List objList = (List)list;
然而报错:Cannot cast from List to List。
好吧,然后把代码改一下遍历一个一个转了:
import java.util.ArrayList;
import java.util.List;
public class ObjectList {
public static void main(String[] args) {
List list = new ArrayList();
//List objList = (List)list;//Cannot cast from List to List
List objList = toObject(list);
}
static public List toObject(List list){
List objlist = new ArrayList();
for(Object e : list){
Object obj = (Object)e;
objlist.add(obj);
}
return objlist;
}
}
有木有哪位好汉解释下,这个报错具体是为啥??
----------------------------------------------------------------------------------------------------------------------------tag
思考了好长时间,看了下java编程思想关于泛型的部分,有一丁点启发吧,不知道对错:
List 这里面的类型Object并不是一个泛型,也不是作为一个所有类型的父类,仅仅只是一个具体的Object类而已,所以arrayList集合中实体的类型必须要是Object类型才行。而如果把List改为泛型List的话就完美解决,它可以允许arrayList集合种类型为类和类型而无限制。