Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java - cannot be referenced from a static context

Tags:

java

class

Here's my simple 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;
      }
    }     
}

However, when I try to create a new object in the insert() function, I get this error:

Error: non-static variable this cannot be referenced from a static context
like image 575
Firkamon Avatar asked Mar 18 '15 23:03

Firkamon


1 Answers

Your Obj class is not static == it's an inner class. This means that it needs an instance of the enclosing class Project to live.

From the static method insert, there is no such Project instance, hence the compiler error.

The Obj class doesn't seem to need any instance variables in Project, so there is no reason to keep it non-static. Make the Obj class static in Project.

public static class Obj
like image 90
rgettman Avatar answered Nov 07 '22 13:11

rgettman