JAVA:如何将一个对象中的对象传递给另一个对象?

JAVA:如何将一个对象中的对象传递给另一个对象?,java,object,Java,Object,我需要将另一个对象(例如来自类节点的对象)中的对象(例如来自类数据的对象)传递给另一个对象(来自类节点的对象)? 节点对象是树的节点。树实现是: public class Tree { private Node rootElement; public Tree() { super(); } public Node getRootElement() { return this.rootElement; } public void setRootElement(Node ro

我需要将另一个对象(例如来自类节点的对象)中的对象(例如来自类数据的对象)传递给另一个对象(来自类节点的对象)? 节点对象是树的节点。树实现是:

public class Tree {

private Node rootElement;

public Tree() {
    super();
}

public Node getRootElement() {
    return this.rootElement;
}

public void setRootElement(Node rootElement) {
    this.rootElement = rootElement;
}
对于节点,我有:

public class Node {

public MyNode data;
public List<Node> children;
public int  childNo;  

public Node() {
    super();
}

public Node(MyNode data) {
    this();
    setData(data);
}

 public Node(MyNode data, int childNo) {
    this();
    setData(data);
    this.childNo=childNo;
}

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

public void addChild(Node child) {
    if (children == null) {
        children = new ArrayList<Node>();
    }
    children.add(child);
}

public MyNode getData() {
    return this.data;
}

public void setData(MyNode data) {
    this.data = data;
}
这是MyNodesDATA

public class MyNodesDATA {
int iD;
String name;
}
因此,树的每个节点都有一个MyNode类型的对象,每个MyNode对象都有一个作为MyNodesDATA类对象的数据。我已经用一个预定义的层次节点结构初始化了这棵树,使用了一些递归方法,我没有放在这里。。。
现在,情人级别的树节点处理它们的数据,并需要将它们发送给它们的父节点(使用它们的父ID)。我被困在这里。。。一个节点(一个对象)如何仅使用另一个对象的一个ID变量将其数据发送到另一个节点(另一个对象)(在本场景中,让我们说它的父对象)上。。。以一种更简单的方式,我需要一个方法来获取(ID和数据)并将数据发送到具有ID的对象!!当然,一旦接收到数据,接收方应该有另一个函数或事件处理程序来执行操作

首先,您可能希望使在
节点
构造函数中创建的
数据
实例成为实例成员。否则,一旦构造函数完成,垃圾收集器就可以释放它

然后,您可以将
数据
参数传递给
节点
的构造函数,也可以使用setter方法来接受
数据
参数

public class Node {
    int iD;
    private DATA d;

    public Node(){
        this.d = new DATA(); // or this(new DATA());
    }

    public Node(DATA d){
        this.d = d;
    }

    public void setData (DATA d) {
        this.d = d;
    }

    public DATA getData() {
        return this.d;
    }
}
现在,您有几个选项可供2个
节点
实例共享
数据
成员:

public class MAIN {
    public static void main(String[] args) {
        DATA data = new DATA();
        Node node1 = new Node(data);
        Node node2 = new Node(data);
    }
}


在您的示例中,
节点
中没有数据对象;您只需在构造函数中初始化一个,然后允许它超出范围。如果要传入
数据
对象,还需要修改构造函数,因此将
节点
更改为:

public class Node {
    int iD;
    DATA d;
    public Node(){
        d = new DATA();
    }
    public Node(DATA d){
        this.d = d;
    }
}
这样就可以存储
数据
实例。然后只需提供一个getter,例如:

public DATA getData() {
    return d;
}
然后你可以做:

public class MAIN {
    public static void main(String[] args) {
        Node node1 = new Node();
        Node node2 = new Node(node1.getData());
    }
}

谢谢你说得对,我忘了在节点对象中声明数据对象。实际上我的代码比这个复杂。我有几个对象没有像“Node node1=new Node();”那样声明和初始化,所以我的对象没有像node1这样的引用。。但是我的对象有一个ID。。我想用节点对象的ID传递数据…实际上我的节点在树结构中。。。所以我想把树的一个节点的数据传递给树的另一个节点……那么你想通过id搜索一棵树中的一个节点,然后从该节点获取数据对象,并将其传递给树中的另一个节点(也通过id找到)?如果是这样的话,这是一个完全不同的问题:实际上每个节点都包含其父ID和其子节点的数组列表。。因此,子节点希望将其数据发送给其父节点,反之亦然..您需要更新您的问题,了解您是如何实现树的,以及您遇到的困难,我不确定您为什么要求树中的节点以这种方式同步其数据。。。您需要编写一个方法,在树中搜索匹配的节点并返回它;这取决于您是要查找具有该id的节点,还是要查找具有该id的子节点的节点,以及该方法的外观。然后,您可以使用getter和setter设置数据的任意方向?最简单的方法是从根开始,假设没有排序,按顺序递归每个子级。到目前为止,您尝试了哪些搜索功能?请参阅以获取有关不同树遍历算法的信息,如果这是您遇到的问题。
public class Node {
    int iD;
    DATA d;
    public Node(){
        d = new DATA();
    }
    public Node(DATA d){
        this.d = d;
    }
}
public DATA getData() {
    return d;
}
public class MAIN {
    public static void main(String[] args) {
        Node node1 = new Node();
        Node node2 = new Node(node1.getData());
    }
}