欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于变量初始化

程序员文章站 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可以作为构造函数的参数