繁体   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