首页
学习
活动
专区
工具
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中区分每个子类的方法,具体选择哪种方式取决于实际需求和设计。

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

相关·内容

领券