簡體   English   中英

使用ArrayList處理一對多關系

[英]Handling one-to-many relationship using ArrayList

我正在努力在我的小型android項目中使用一對多關系。 我已經提煉了這個問題(我正在學習Java)。 嘗試將子對象添加到父對象時,我的程序崩潰。 我花了一些時間解決它。 我需要很少的支持才能回到正軌。 謝謝。

public class Master {
    public static void main(String[] args) {
        Parent big;
        big = new Parent("aParent");
        big.addChild(new Child("c1"));
        big.addChild(new Child("c2"));
        for (Child ch : big.getChildren()) {
            System.out.println(ch.toString());
        }
    }
}

public class Parent {
    public String name;
    public List<Child> children = new ArrayList<Child>();
    public Parent(String name) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.children = null;
    }
    public void addChild(Child c) {
        this.children.add(c);
    }
    public List<Child> getChildren() {
        return children;
    }
}

public class Child {
    public String name;
    public Child(String s) {
        this.name = s;
    }
    public String toString() {
        return name;
    }
}

我敢打賭你的崩潰是NullPointerException

發生這種情況是因為在您的Parent類中:

  • 您將children List初始化為實例語句
  • 但是,您需要在構造函數中將children List引用重新分配為null此后通過編程方式調用)-請參見代碼: this.children = null; // to remove this.children = null; // to remove

因此,一旦調用addChild方法,便試圖add參數addnull List

this.children = null; 是您的問題,請將其刪除,然后嘗試

它在您的add方法中導致NullPointerException

刪除此行: this.children = null;

您要清除在此處創建的ArrayList:

public List<Child> children = new ArrayList<Child>();

您正在使用字段初始化程序和構造函數初始化。 注釋掉這一行:this.children = null;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM