簡體   English   中英

JAVA:如何將一個對象中的一個對象傳遞給另一個對象?

[英]JAVA: how to pass an object within one object to another object?

我需要將另一個對象(例如,來自NODE類的對象)內的對象(例如,來自DATA類的對象)傳遞給另一個對象(來自NODE類)? Node對象是樹的節點。 樹的實現是:

public class Tree {

private Node rootElement;

public Tree() {
    super();
}

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

public void setRootElement(Node rootElement) {
    this.rootElement = rootElement;
}

然后對於Node我有:

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;
}

對於Mynode我有:

public class MyNode {

public String ID = new String();   //UUID
protected String parentID;
MyNodesDATA d = new MyNodesDATA();


public MyNode() {
    setID(UUID.randomUUID().toString());
}

public MyNodesDATA getMyNodesDATA () {
    return this.MyNodesDATA ;
}

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

這是MyNodesDATA

public class MyNodesDATA {
int iD;
String name;
}

因此,樹的每個節點都有一個MyNode類型的對象,每個MyNode對象都有一個數據作為MyNodesDATA類中的對象。 我已經使用一些遞歸方法(沒有在這里使用遞歸方法)使用預定義的層次結構來初始化樹...現在,戀人級別的樹節點處理其數據並需要將其發送給父母(使用它們家長ID)。 我困在這里...一個節點(一個對象)如何僅使用另一個對象的一個​​ID變量將其數據發送到另一個節點(另一個對象)(在這種情況下,假設其父對象)...需要一種獲取(ID和DATA)並將數據發送到具有ID的對象的方法! 並且當然在接收方應該有另一個函數或事件處理程序,以便在收到數據后立即采取行動。

首先,您可能希望使在Node構造函數中創建的DATA實例成為實例成員。 否則,構造函數完成后即可由垃圾收集器釋放。

然后,可以將DATA參數傳遞給Node的構造函數,也可以有一個將接受DATA參數的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;
    }
}

現在,您可以使用兩個Node實例的多個選項來共享DATA成員:

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 MAIN {
    public static void main(String[] args) {
        Node node1 = new Node();
        Node node2 = new Node(node1.getData());
    }
}

要么

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

在您的示例中, Node沒有 DATA對象。 您只需在構造函數中初始化一個,然后使其超出范圍即可。 如果要傳遞DATA對象,還需要修改構造函數,因此將Node更改為:

public class Node {
    int iD;
    DATA d;
    public Node(){
        d = new DATA();
    }
    public Node(DATA d){
        this.d = d;
    }
}

這樣您就可以存儲DATA實例。 然后只需提供一個吸氣劑,例如:

public DATA getData() {
    return d;
}

然后您可以執行以下操作:

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

暫無
暫無

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

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