toString,Nullpointerexception

时间:2012-11-07 18:03:38

标签: java object reference nullpointerexception tostring

当我试图从arraylist中获取树名时,我得到了一个N​​ullpointerexception。我已经测试过仅仅取名这个名字,但我仍然遇到这个错误。我想做的就是知道哪个设备正在切割哪棵树。

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
    }

}

1 个答案:

答案 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>();
   } 
   ...