首先,泛型本身并不直接改动原有的类型设计,只是”让编译器帮我们检查在添加东西到集合中或对集合迭代时检查对应的类型“,因为有了泛型,之后你可以直接
UserInforList a = userIdList.get(1); 而不用 (UserInforList) userIdList.get(1);
为了保证后面直接从集合中拿东西不需要 cast ,当然需要保证这其中所有的过程都是符合当初指定的类型的,因此不可以直接把它们转换的。因为里面装的对象的类型本来就不相同的。
另外要记得在 Java 中抽换类型的对象本身是什么类型从来不会因为你把它添加到集合中或赋值给父类型的变量符号而改变,它一直”还是原来的配方,还是熟悉的味道“。我们在继承关系树上的不同父类之间赋值仅仅改变它的成员的可见性(让编译器来检查某个方法对于当前这个变量类型来说是否可以调用),这也是为什么用反射就能调用所有方法的原因,如果类型真的不同了为什么你能成功通过反射调用某个子类中才有的方法呢?
只有像C语言中的那些基本类型(比如 int, float) 会因为 cast 而改变(因为 cast 会改变一个数字在内存中的二进制表示以及及超出精度范围而产生的变化等)。
写for循环一个一个把UserInfoList _st转化为String添加到新的list
,返回新list
没什么好办法
1.在UserInfoList_st 中添加构造器、toString() 方法,注意这两个方法的转换格式要对应;
public UserInfoList_st(String str){
/*解析字符串,初始化属性*/
}
public String toString(){
/*输出字符串*/
}
2.新建Util.java,添加如下方法,实现转换过程
public static ArrayList
ArrayList
for(String str:list){
dest.add(new UserInfoList_st(str));
}
return dest;
}
public static ArrayList
ArrayLIst
for(UserInfoList_st st:list){
dest.add(st.toString());
}
return dest;
}
*****************************************************************
如果使用spring框架,框架转换器可以实现自动转换的功能