Java 无法将子节点添加到树节点

Java 无法将子节点添加到树节点,java,nullpointerexception,tree,Java,Nullpointerexception,Tree,我从数据库中检索数据,将其放入一个自定义类DataClass,然后将我的数据格式化为一个节点数组列表,直到这里一切正常。然后,我想在我的数据上做一个循环,并将子节点添加到每个节点。但是我有一个NullPointerException错误 at be.groups.observatory.domainmodel.Node.addChild(Node.java:38) at be.groups.observatory.be.groups.observatory.s

我从数据库中检索数据,将其放入一个自定义类
DataClass
,然后将我的数据格式化为一个节点数组列表,直到这里一切正常。然后,我想在我的数据上做一个循环,并将子节点添加到每个节点。但是我有一个
NullPointerException
错误

    at be.groups.observatory.domainmodel.Node.addChild(Node.java:38)         

    at be.groups.observatory.be.groups.observatory.services.MainService.addNodeChildren(MainService.java:37)

    at be.groups.ui.resource.StructureResource.getAllChildren(StructureResource.java:130)
所以我的班级看起来像:

@Entity
public class DataClass {
    @Id
    private Integer id;
    private String structureDescription;
    private String structId;
    private String structureTag;
    private Integer elementId;
    private String elementDescription;
    private Integer elementsSuite;
    private String elementTag;
    private Integer parent;
    private Integer elementTypeId;
    at be.groups.observatory.domainmodel.Node.addChild(Node.java:38)         

    at be.groups.observatory.be.groups.observatory.services.MainService.addNodeChildren(MainService.java:37)

    at be.groups.ui.resource.StructureResource.getAllChildren(StructureResource.java:130)
然后我有一个节点类:

public class Node {
    private String id = "-1";
    private List<Node> children = null;
    private String parent = "#";
    private String text = "";

    public Node(){}

    public Node(String id, String parent, String text) {
        this.id = id;
        this.parent = parent;
        this.text = text;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List<Node> getChildren() {
        return children;
    }

    public void setChildren(List<Node> children) {
        this.children = children;
    }

    public void addChild(Node child)
    {
        children.add(child);
    }

    public String getParent() {
        return parent;
    }

    public void setParent(String parent) {
        this.parent = parent;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public boolean equals(Node node)
    {
        return node.getText().equals(getText());
    }
}
    at be.groups.observatory.domainmodel.Node.addChild(Node.java:38)         

    at be.groups.observatory.be.groups.observatory.services.MainService.addNodeChildren(MainService.java:37)

    at be.groups.ui.resource.StructureResource.getAllChildren(StructureResource.java:130)

你从来没有给你的孩子开过先例

    at be.groups.observatory.domainmodel.Node.addChild(Node.java:38)         

    at be.groups.observatory.be.groups.observatory.services.MainService.addNodeChildren(MainService.java:37)

    at be.groups.ui.resource.StructureResource.getAllChildren(StructureResource.java:130)
有许多修复方法,其中之一是您可以将方法
addChild
更改为:

    at be.groups.observatory.domainmodel.Node.addChild(Node.java:38)         

    at be.groups.observatory.be.groups.observatory.services.MainService.addNodeChildren(MainService.java:37)

    at be.groups.ui.resource.StructureResource.getAllChildren(StructureResource.java:130)
   public void addChild(Node child)
    {
        if(children==null){
           children=new ArrayList<Node>();
        }

        children.add(child);
    }
public void addChild(节点子节点)
{
if(children==null){
children=newarraylist();
}
添加(child);
}

您调试代码了吗?使用IDE?可能与@mtyurt重复的@mtyurt,我正在处理Intellij,它没有显示任何错误…似乎
子项
从未初始化,因此
null
,因此,当添加子项时,当调用
setChildren()
时,仅在
节点
类中初始化NPE。检查
addChild()
方法中的
children
是否为
null
。编辑:编辑它^^最好将节点类中的children属性从
private List children=null更改为children
to
private List children=new ArrayList()?@GrechkaVassili我个人的意见是,如果类没有子类,则将子类保持为空。这样可以减少创建和存储在内存中的对象数量。请记住它只是个人喜好,不要说你的解决方案是错误的