在 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 obj
为 static
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 成员。
class Test {
Test obj;
public static void main(String[] args) {
obj = new Test();
}
}
我知道实例变量和非静态方法无法在静态方法中访问,因为静态方法不知道堆上的任何内容。
我想问一下main是不是静态方法我怎么访问实例变量'obj'.
为什么在静态 main
中访问实例变量是不可能的:实例变量 您希望访问哪个实例?
一个可能的误解是 Java 会在应用程序启动时创建主 class 的实例 - 这是不正确的。 Java 不创建这样的实例,您从静态方法开始,由您决定创建哪些 class 实例。
解决方法:
声明
Test obj
为static
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 成员。