在java中创建内部类对象的问题

bun*_*ath 6 java static static-variables inner-classes


这是代码.

public class Test {
        class InnerClass{

               }

   public static void main(String[] args){
            InnerClass ic = new InnerClass();
        }
    }
Run Code Online (Sandbox Code Playgroud)

它说错误信息

non-static variable this cannot be referenced from a static context
after creation of object ic.
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我理由吗?

谢谢

ska*_*man 23

InnerClass需要是static自己,即

public class Test {

   static class InnerClass{    
   }

   public static void main(String[] args){
      InnerClass ic = new InnerClass();
   }
}
Run Code Online (Sandbox Code Playgroud)

如果InnerClass没有 static,它只能在父实例的上下文实例Test.相当巴洛克式的语法是:

public class Test {

   class InnerClass{    
   }

   public static void main(String[] args){
      Test test = new Test();
      InnerClass ic = test.new InnerClass();
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 你也可以在一行中完成"InnerClass ic1 = new Test().new InnerClass();" (2认同)