在 main() 方法中访问实例变量?

Accessing an instance variable in main() method?

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

我知道实例变量和非静态方法无法在静态方法中访问,因为静态方法不知道堆上的任何内容。

我想问一下main是不是静态方法我怎么访问实例变量'obj'.

为什么在静态 main 中访问实例变量是不可能的:实例变量 您希望访问哪个实例

一个可能的误解是 Java 会在应用程序启动时创建主 class 的实例 - 这是不正确的。 Java 不创建这样的实例,您从静态方法开始,由您决定创建哪些 class 实例。


解决方法:

  • 声明 Test objstatic

    static Test obj;
    public static void main(String[] args) {
        obj = new Test();
    }
    
  • 在 main

    中声明 Test obj 为局部变量
    public static void main(String[] args) {
        Test obj = new Test();
    }
    
  • 在您的 main 中创建 Test 的实例,然后您将能够访问其实例变量

    static Test obj;
    public static void main(String[] args) {
        obj = new Test();
        obj.myInstanceVariable = ... // access of instance variable
    }
    

obj 应该是 static 这样的:

   static Test obj;

main 方法也无法访问 non-static 成员。