关于变量初始化
程序员文章站
2022-04-19 18:23:35
...
ArrayList<Person> a;
Context context;
public void onCreate(Bundle savedInstanceState) {
...
public void onResponse(JSONObject response){
a = new ArrayList<>();
}
}
public void onViewCreated(){
a.get();
}
上面这段代码出现了 bug。
后来咨询了大神得知,onResponse是一个线程里的方法,它有可能在onViewCreate()后才执行。所以这里的a会报空指针。所以a需要在更早的时候初始化。
这是又遇到一个新的问题,a是在构造函数中初始化呢,还是在onCreate()方法中初始化。经过调试,发现a可以在构造函数初始化,因为与activity无关,而getContext()方法则不能在构造函数中使用,因为必须在onCreate()方法中的super.onCreate(savedInstanceState);执行完以后才能执行它。
通常context可以作为构造函数的参数