gpt4 book ai didi

java - 将子类的 ArrayList 传递给采用父类(super class)的 ArrayList 的构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:26 26 4
gpt4 key购买 nike

好吧,我正在为大学做这个项目,我想我在这里做错了什么,我猜我对 Java 子类化和类继承的理解还不够。

我已经用这种小形式重写了我的问题。

    class SuperClass {

int dunno;

public SuperClass(int dunno) {
this.dunno = dunno;
}
}

class SubClass extends SuperClass {

int duncare;

public SubClass(int dunno, int duncare) {
super(dunno);
this.duncare = duncare;
}
}

class VeryBigClass {

ArrayList<SuperClass> superList;

public VeryBigClass(ArrayList<SuperClass> superList) {
this.superList = superList;
}
}

public void main(String[] args) {

new VeryBigClass(new ArrayList<SubClass>()); // this is the problematic line

}

}

简而言之,我写了很多扩展一个通用类的类,并且在很多地方我都对父类(super class)(通用类)进行了操作,而不是用同样的方式一个一个地处理每个子类.

但是我无法创建我需要的类的实例,因为构造函数将父类(super class)作为参数。自 new VeryBigClass(new (ArrayList<SuperClass>)ArrayList<SubClass>()); 以来,我什至不知道如何转换它显然是错误的。另外,这些实例的构建将在某个时候由 json 库处理,所以我不想做这些花哨的东西......

最佳答案

如果你使用泛型,它应该工作得很好,父类(super class)列表和子类列表不一样,但是泛型解决了这个问题:

class VeryBigClass<T extends SuperClass> {

ArrayList<T> superList;

public VeryBigClass(ArrayList<T> superList) {
this.superList = superList;
}
}

关于java - 将子类的 ArrayList 传递给采用父类(super class)的 ArrayList 的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44221882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com