Java - 无法从静态上下文中引用

时间:2015-03-18 23:47:25

标签: java class

这是我的简单课程:

public class Project {
    private int size;
    private Obj tree;
    static Obj insert( Obj t, String s ) { // t is null
        t = new Obj();
        t.val = s;
        return t;
    }
    public Project()
    {
      Obj tree = new Obj();
      int size=0;
    }
    public class Obj
    {
      public String val;
      public Obj()
      {
        val=null;
      }
    }     
}

但是,当我尝试在insert()函数中创建一个新对象时,我收到此错误:

Error: non-static variable this cannot be referenced from a static context

1 个答案:

答案 0 :(得分:6)

您的Obj课程不是static ==这是一个内部课程。这意味着它需要一个封闭类Project的实例来生存。

static方法insert,没有这样的Project实例,因此编译错误。

Obj类似乎不需要Project中的任何实例变量,因此没有理由将其保持为非static。在Obj中制作staticProject

public static class Obj