首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在父类的arraylist中区分每个子类

在父类的ArrayList中区分每个子类,可以通过以下几种方式实现:

  1. 使用多态:多态是面向对象编程的重要特性之一,它允许将子类的对象赋值给父类的引用变量。在父类的ArrayList中存储不同子类的对象,然后通过类型转换将其还原为子类对象,从而区分每个子类。例如:
代码语言:java
复制
ArrayList<ParentClass> list = new ArrayList<>();
list.add(new ChildClass1());
list.add(new ChildClass2());

for (ParentClass obj : list) {
    if (obj instanceof ChildClass1) {
        ChildClass1 child1 = (ChildClass1) obj;
        // 处理ChildClass1对象
    } else if (obj instanceof ChildClass2) {
        ChildClass2 child2 = (ChildClass2) obj;
        // 处理ChildClass2对象
    }
}
  1. 使用自定义标识属性:在父类中定义一个标识属性,用于区分每个子类。子类可以根据需要重写该属性。然后在父类的ArrayList中存储不同子类的对象,并通过标识属性来区分每个子类。例如:
代码语言:java
复制
class ParentClass {
    protected String type;

    public String getType() {
        return type;
    }
}

class ChildClass1 extends ParentClass {
    public ChildClass1() {
        type = "ChildClass1";
    }
}

class ChildClass2 extends ParentClass {
    public ChildClass2() {
        type = "ChildClass2";
    }
}

ArrayList<ParentClass> list = new ArrayList<>();
list.add(new ChildClass1());
list.add(new ChildClass2());

for (ParentClass obj : list) {
    if (obj.getType().equals("ChildClass1")) {
        // 处理ChildClass1对象
    } else if (obj.getType().equals("ChildClass2")) {
        // 处理ChildClass2对象
    }
}
  1. 使用枚举类型:在父类中定义一个枚举类型,用于表示每个子类。子类可以根据需要重写该枚举类型。然后在父类的ArrayList中存储不同子类的对象,并通过枚举类型来区分每个子类。例如:
代码语言:java
复制
enum ChildType {
    CHILD_CLASS_1,
    CHILD_CLASS_2
}

class ParentClass {
    protected ChildType type;

    public ChildType getType() {
        return type;
    }
}

class ChildClass1 extends ParentClass {
    public ChildClass1() {
        type = ChildType.CHILD_CLASS_1;
    }
}

class ChildClass2 extends ParentClass {
    public ChildClass2() {
        type = ChildType.CHILD_CLASS_2;
    }
}

ArrayList<ParentClass> list = new ArrayList<>();
list.add(new ChildClass1());
list.add(new ChildClass2());

for (ParentClass obj : list) {
    if (obj.getType() == ChildType.CHILD_CLASS_1) {
        // 处理ChildClass1对象
    } else if (obj.getType() == ChildType.CHILD_CLASS_2) {
        // 处理ChildClass2对象
    }
}

以上是几种在父类的ArrayList中区分每个子类的方法,具体选择哪种方式取决于实际需求和设计。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

5分19秒

17-spring是怎么执行子类的父类方法

1分31秒

ES6/37.尚硅谷_ES6-子类对父类方法的重写

24分47秒

1.尚硅谷全套JAVA教程--基础必备(67.32GB)/尚硅谷Java入门教程,java电子书+Java面试真题(2023新版)/08_授课视频/169-数据结构与集合源码-ArrayList在JDK7和JDK8中的源码剖析.mp4

13分17秒

002-JDK动态代理-代理的特点

15分4秒

004-JDK动态代理-静态代理接口和目标类创建

9分38秒

006-JDK动态代理-静态优缺点

10分50秒

008-JDK动态代理-复习动态代理

15分57秒

010-JDK动态代理-回顾Method

13分13秒

012-JDK动态代理-反射包Proxy类

17分3秒

014-JDK动态代理-jdk动态代理执行流程

6分26秒

016-JDK动态代理-增强功能例子

10分20秒

001-JDK动态代理-日常生活中代理例子

领券