我有一類物件:
public class SubObjects {
int depth;
public SubObjects(int d) {
this.depth = d;
}
}
然后是另一類物件:
import java.util.ArrayList;
public class Objects {
private int height;
private int width;
ArrayList<SubObjects> liste;
public Objects(int h, int w) {
this.height = h;
this.width = w;
}
}
這里的想法是每個物件都應該能夠保存一個高度值、一個寬度值和一個子物件串列。
例如 = 2,4,[SubObject1, SubObject2]
以下是主類:
import java.util.*;
public class Tryout {
public static void main(String[] args) {
SubObjects S1 = new SubObjects(7);
SubObjects S2 = new SubObjects(9);
Objects O1 = new Objects(2,4);
O1.liste.add(S1);
O1.liste.add(S2);
System.out.println(O1);
}
}
首先我創建兩個子物件。
然后我用整數 2 和 4 創建一個物件。
一切都誤入歧途的是下一行:
O1.liste.add(S1);
給出的錯誤代碼:
Cannot invoke "java.util.ArrayList.add(Object)" because "O1.liste" is null
現在我知道陣列串列為空,當然我還沒有添加任何東西,但為什么我不能添加任何東西呢?
uj5u.com熱心網友回復:
liste未初始化。換句話說,它不是ArrayList- 它是一個null參考。由于那里沒有物件,因此您不能對其呼叫任何方法。
為了解決這個問題,你可以liste在構造函式中初始化:
public Objects(int h, int w) {
this.height = h;
this.width = w;
this.liste = new ArrayList<>();
}
uj5u.com熱心網友回復:
liste 從未被初始化。初始化如下或在建構式中。
public class Objects {
private int height;
private int width;
ArrayList<SubObjects> liste = new ArrayList<>(); // <===add this
public Objects(int h, int w) {
this.height = h;
this.width = w;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/386056.html
上一篇:來自物件的動態React導航欄
