[英]How to access instance variable from another class in Java
我正在尝试实现树数据结构。 当前,我在GeneralTree.java中编程addNode()方法时遇到问题。 我想检查一下GeneralTree.root()是否为null,如果是,则将数据添加到该节点。 我在从GeneralTree类的GeneralNode类访问数据实例变量时遇到问题。
GeneralNode.java
import java.util.ArrayList;
public class GeneralNode {
int data;
GeneralNode parent;
ArrayList<GeneralNode> children;
public void setData(int i){
data = i;
}
public int getData(){
return data;
}
}
GeneralTree.Java
import java.util.ArrayList;
public class GeneralTree {
GeneralNode root;
public GeneralTree(){
}
public void addNode(int data){
if (GeneralTree.root == null){
root.setData(data);
}
}
public boolean isEmpty(){
return root == null;
}
public GeneralNode root(){
return root;
}
/*
public int getPosition(){
return position;
}
*/
public static void main(String[] args){
GeneralTree myTree = new GeneralTree();
System.out.println(myTree);
System.out.println(myTree.root());
System.out.println(myTree.isEmpty());
}
}
您的addNode方法不应该编译,因为root不是静态的,因此您应该直接访问它,不需要类名。 条件应为!= null:
public void addNode(int data){
if (root != null){ //updated line
root.setData(data);
}
}
另外,您的构造函数应初始化root:
public GeneralTree() {
root = new GeneralNode();
}
如果引用不是静态的,则无法访问类似于GeneralTree.root
的root
引用。 如果所有GeneralTree对象的root值都相同,则将其声明为静态。
如果所有GeneralTree对象的root值都不相同,请按以下方式更改方法:
public void addNode(int data){
if (this.root == null){
root.setData(data);
}
如果我正确理解了您的问题,则需要创建GeneralNode的实例或将类设为静态。
public static void main(String[] args){
GeneralTree myTree = new GeneralTree();
GeneralNode theGeneralNode = new GeneralNode();
System.out.println(myTree);
System.out.println(myTree.root());
System.out.println(myTree.isEmpty());
}
之后,您可以在GeneralNode中引用其中的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.