关于List对象子类父类之间的转换,方便不同对象List转换(相似的两个对象,可以用一个对象继承另一个对象来实现,比如List<A>-->List<B>
这时可以用A继承B,B中需要包含所有A中需要的属性值,如果缺少,会导致转换到B中的参数无法取值),代码如下:
其中:Parent(id,name.age);Child(id,name,age2)
public static void main(String[] args) {
List<Child> childs = new ArrayList<Child>();
Child child = new Child();
child.setId(1);
child.setName("name");
//这里赋值的是age2,转到父类Parent没有age2属性,所以Parent对象无法输出这个参数
child.setAge2(22);
childs.add(child);
//System.out.println(childs.toString());
/* 将子类list转换成父类list,会出现子类参数丢失问题 */
List<Parent> parents = new ArrayList<Parent>();
//将child1的list添加到child2s中;
parents.addAll(childs);
System.out.println("这是parents:"+parents.toString());
for(Parent parent : parents){
System.out.println(parent.getName()+" "+parent.getAge());
}
/* 父类list转换成子类list,参数不会丢失,可以通过子类对象调用父类方法获取 */
Object[] object = parents.toArray();
//使用Arrays工具类,将数组转换成list
List<Object> objects = Arrays.asList(object);
//将objects强转成childlist;这里强转时,不能定义后面括号内的List类型,如果定义会报编译错误
//及时child没有继承Parent,这里也不会报编译错误,但是按照Child对象循环输出时会报错
List<Child> childs2 = (List)objects;
System.out.println("这是childs2:"+childs2.toString());
for(Child child2 : childs2){
//子类可以调用父类的方法,包括get/set方法
System.out.println(child2.getAge()); //如果Child没有继承Parent,这里的写法会报错
System.out.println(child2.getName()+" "+child2.getAge2());
}
}