Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在静态块中使用实例变量_Java_Static - Fatal编程技术网

Java 在静态块中使用实例变量

Java 在静态块中使用实例变量,java,static,Java,Static,这段代码会导致运行时错误吗?(已经使用了一些android库,但我不认为这是特定于平台的) 令人困惑的是,在使用eclipse调试器时 A.getContext() 计算结果为非null值 然而 anotherContext 计算结果为null 有人知道这种行为吗? 谢谢 编辑: 糟糕的是,sContext是一个静态变量,但它只在实例方法中被赋值,如中所示 public void onCreate() { sContext = getApplicationContext(); } 那么在

这段代码会导致运行时错误吗?(已经使用了一些android库,但我不认为这是特定于平台的)

令人困惑的是,在使用eclipse调试器时

A.getContext()
计算结果为非null值

然而

anotherContext 
计算结果为null

有人知道这种行为吗? 谢谢

编辑:

糟糕的是,sContext是一个静态变量,但它只在实例方法中被赋值,如中所示

public void onCreate()
{
sContext = getApplicationContext();
}

那么在这种情况下,行为会是什么呢?

这甚至不会编译。它会给你错误

“无法从静态上下文引用非静态变量”


因为您试图从静态块访问实例变量,所以如果
初始值设定项块
是非静态的,或者变量是
静态的
,它将不起作用,那么这将运行
anotherContext
不是静态的,因此无法从静态方法
getContext
中检索。如果要初始化上下文,请在静态初始化块中进行初始化。

您无法从静态方法访问实例变量。记住,静态方法不知道类的任何特定实例化。它只是作为类的一种方法存在。换句话说,你的

public static Conext getContext() {
    return sContext;
}

方法不知道实例
sContext
对象。

否,它不会导致运行时错误。据我所知,它甚至不会编译。您试过了吗?
错误:无法从静态上下文引用非静态变量sContext
public static Conext getContext() {
    return sContext;
}