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

标签 java static instance

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

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

我想问一下 main 是否是一个静态方法我如何访问实例变量“obj”。

最佳答案

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

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


解决方法:

  • 测试对象声明为static

    static Test obj;
    public static void main(String[] args) {
        obj = new Test();
    }
    
  • Test obj声明为main内部的局部变量

    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
    }
    

关于java - 在 main() 方法中访问实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044044/

相关文章:

java - 我应该如何循环这个程序?

java - Spring Boot 在加载页面时忽略 CSS/JS

c++ - 类静态变量初始化的规则是什么?

java - Android 中公共(public)静态变量的生命周期是多少?

c# - 如何与多个类共享一个类的实例?

java - 在 Google App Engine JAVA 中创建多个实例

java - 如何使用 JAXB 解码包含混合标签(具有属性,并且具有嵌套标签的内容值)的 XML 文件?

java - Java 和 .NET 字符串文字驻留在哪里?

static - TypeScript:访问类的静态方法

java - Account子类对象创建