Search code examples
javastaticstatic-variablesinner-classes

problem creating object of inner class in java



Here is the code.

public class Test {
        class InnerClass{

               }

   public static void main(String[] args){
            InnerClass ic = new InnerClass();
        }
    }

It says the error message

non-static variable this cannot be referenced from a static context
after creation of object ic.

Can anyone give me the reason?

Thanks


Solution

  • InnerClass needs to be static itself, i.e.

    public class Test {
    
       static class InnerClass{    
       }
    
       public static void main(String[] args){
          InnerClass ic = new InnerClass();
       }
    }
    

    If InnerClass is not static, it can only be instantiated in the context of a parent instance of Test. The rather baroque syntax for this is:

    public class Test {
    
       class InnerClass{    
       }
    
       public static void main(String[] args){
          Test test = new Test();
          InnerClass ic = test.new InnerClass();
       }
    }