class Test {
Test obj;
public static void main(String[] args) {
obj = new Test();
}
}
我知道实例变量和非静态方法在静态方法中是不可访问的,因为静态方法不知道堆上的任何内容。
我想询问main是否是一个静态方法如何访问实例变量'obj'。
答案 0 :(得分:4)
为什么在静态main
中访问实例变量是不可能的: 的实例变量您希望访问哪个实例?
一种可能的误解是Java在应用程序启动时创建了主类的实例 - 但事实并非如此。 Java不会创建这样的实例,而是从静态方法开始,由您创建的类的实例取决于您。
出于这种方式:
将Test obj
声明为static
static Test obj;
public static void main(String[] args) {
obj = new Test();
}
在主
中声明Test obj
为局部变量
public static void main(String[] args) {
Test obj = new Test();
}
在Test
中创建main
的实例,然后您就可以访问其实例变量
static Test obj;
public static void main(String[] args) {
obj = new Test();
obj.myInstanceVariable = ... // access of instance variable
}
答案 1 :(得分:0)
obj
static
应该是这样的:
static Test obj;
主方法也无法访问非静态成员。