当我试图从arraylist中获取树名时,我得到了一个Nullpointerexception。我已经测试过仅仅取名这个名字,但我仍然遇到这个错误。我想做的就是知道哪个设备正在切割哪棵树。
public class TreeTester {
public static void main(String[] args) {
Tree trees = new Tree("Trees");
Tree tree1 = new Tree("Ash Tree");
trees.addTree(tree1);
树类
public Class Tree{
private ArrayList<Tree> theTrees;
private String treeName;
//Forgot these
Tree(String trees //There are more but not relevent) {
theTrees = new ArrayList<Tree>();
}
Tree(String treeName){
this.treeName = treeName;
}
//
public boolean addTree(Tree newTree){
theTrees.add(newTree);
return true;
}
@Override
public String toString(){
String s = getTreeName();
return s;
}
private String getTreeName() {
return this.treeName; }
}
// ------------------为了方便而缩短------------------------ - // 想象一下缺少的变量和构造函数
public Class Equipment{
private Tree TreeDetails;
@Override
public String toString(){
String s = "Using " + getEqupiment(); + "to cut " + setCutTree()
}
public boolean setCutTree(){
this.treename = treename.toString(); //Nullpointer issue here
return this.treecut = true;
//getEquipment works fine
}
}
答案 0 :(得分:2)
您需要初始化theTrees
ArrayList
public class Tree {
private ArrayList<Tree> theTrees = new ArrayList<Tree>();
您还遗漏了Tree
方法中使用的main
的一个参数构造函数。由于即使在访问名称时您获得NullPointerException
,我也认为此构造函数不会初始化treeName
。
使用构造函数,类看起来像这样:
public class Tree {
private ArrayList<Tree> theTrees;
private String treeName;
public Tree(String treeName) {
this.treeName = treeName;
this.theTrees = new ArrayList<Tree>();
}
...