此代码会导致运行时错误吗? (已经使用了一些android库,但我不认为这是特定于平台的)
class A
{
Context sContext;
public A()
{
//initialize sContext here
}
public static Conext getContext()
{
return sContext;
}
}
class B
{
public static Context anotherContext;
static
{
anotherContext = A.getContext();
}
}
令人困惑的部分是使用eclipse调试器时,
A.getContext()
计算为非空值。
然而
anotherContext
评估为null
有没有人对这种行为有任何想法? 感谢
编辑:
我的错,sContext是一个静态变量,但只在实例方法中为它分配一个值,如
public void onCreate()
{
sContext = getApplicationContext();
}
那么在这种情况下,行为会是什么?
答案 0 :(得分:0)
这甚至都不会编译。它会给你错误
“无法从静态上下文引用非静态变量”
因为你试图从静态块中访问一个实例变量,所以如果initializer block
是非静态的或者变量是static
,则会运行。
答案 1 :(得分:0)
它无效。 anotherContext
不是静态的,因此无法从静态方法getContext
中检索。如果要获取上下文,请在静态init块中执行此操作。
答案 2 :(得分:0)
您无法从静态方法访问实例变量。请记住,静态方法不了解您的类的任何特定实例。它通常作为你班级的一种方法存在。换句话说,你的
public static Conext getContext() {
return sContext;
}
Method不了解实例sContext
对象。