好吧,我正在爲這所大學的這個項目工作,我想我在這裏做錯了什麼,我猜想我沒有足夠的理解java的繼承和類繼承。將一個ArrayList的子類傳遞給一個構造函數,該構造函數接受超類的ArrayList?
我改寫了這個小表單中的問題。
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
}
}
在小語,我寫了很多擴展一個更一般的類的類,並且在很多地方我都取得操作和超類(一般的),而不是由一個處理每個子類中的一個以同樣的方式。
但我不能創建我需要的類的實例,因爲構造函數需要作爲超類的參數。我甚至不知道如何投射它,因爲new VeryBigClass(new (ArrayList<SuperClass>)ArrayList<SubClass>());
顯然是錯誤的。另外,這些實例的構建將由json庫在某些時候處理,所以我寧願不做這樣的花哨的東西...
但你沒有解釋爲什麼! –