关于继承,父类子类List之间相互转换问题

关于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());
        }
    }

版权声明:本文为doudou_demo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。