我需要将一个对象(例如来自Class DATA的对象)传递给另一个对象(例如来自Class NODE的对象)到另一个对象(来自类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 Type对象,每个MyNode对象都有一个数据作为MyNodesDATA类的对象。我已经使用一些递归方法用预定义的分层节点结构初始化了树,我没有把它放在这里...... 现在,情人级别的树节点处理他们的数据并需要将它们发送给他们的父母(使用他们的父母ID)。我坚持在这里......一个节点(一个对象)如何使用另一个对象的一个ID变量将其数据发送到另一个节点(另一个对象)(在这个场景中说它的父节点)...一种更简单的方法我需要一个方法来获取(ID和DATA)并将数据发送到具有ID的对象!当然接收方应该有另一个函数或事件处理程序,一旦收到数据就采取行动......
答案 0 :(得分:1)
首先,您可能希望在DATA
构造函数中创建的Node
实例成为实例成员。否则,一旦构造函数完成,它就可以被垃圾收集器释放。
然后可以将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;
}
}
现在,您有2个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());
}
}
答案 1 :(得分:1)
在您的示例中,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());
}
}