class Test {
Test obj;
public static void main(String[] args) {
obj = new Test();
}
}
我知道实例变量和非静态方法在静态方法中是不可访问的,因为静态方法不知道堆上的任何内容。
我想问一下,如果main是一个静态方法,我如何访问实例变量'obj'。
为什么在静态main
方法中访问实例变量是不可能的:你期望访问哪个实例的实例变量?
一个可能的误解是当应用程序启动时,Java会创建您的主类的一个实例 - 这是不正确的。Java没有创建这样的实例,您将从一个静态方法开始,并且由您决定创建哪个类的实例。
解决方法:
Declare Test obj
as static
static Test obj;
public static void main(String[] args) {
obj = new Test();
}
Declare Test obj
as local variable inside main
public static void main(String[] args) {
Test obj = new Test();
}
Create an instance of Test
in your main
, then you'll be able to access its instance variables
static Test obj;
public static void main(String[] args) {
obj = new Test();
obj.myInstanceVariable = ... // access of instance variable
}
myInstanceVar
并希望访问某些实例的变量。如果您有一个实例,则可以自由访问其实例变量。 - Jiri Tousekstatic Test obj;
public static void main(String[] args) {
obj = new Test();
}
obj
应该像这样是static
的:
static Test obj;
主方法也无法访问非静态成员。
static
。 - Michael