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

本文探讨了Java中如何实现从子类对象列表(List<Child>)到父类对象列表(List<Parent>)的转换,并讨论了转换过程中可能出现的问题及解决办法。通过示例代码展示了转换过程及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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());
        }
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值