Android:当我传递Null时,构造函数是不明确的,但是当我传递分配给Null的变量时则不然

Sol*_*ace 5 java android arraylist adapter android-arrayadapter

我写了以下声明来创建一个ArrayAdapter<String>,

ArrayAdapter<String> arrayListAdapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_result_titles, R.layout.row_listview, arrayList);
Run Code Online (Sandbox Code Playgroud)

但是我得到了构造函数调用不明确的错误.

我知道当传递null时,我们不知道哪个ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)和哪个ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)是调用.

但后来我尝试了这个:

ArrayList arrayList = null;
ArrayAdapter<String> arrayListAdapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_result_titles, R.layout.row_listview, arrayList);
Run Code Online (Sandbox Code Playgroud)

这不会给出错误,虽然我还在路过null,不是吗?

为什么会这样?

Pet*_*ter 9

发生这种情况是因为在第二种情况下,arrayList是ArrayList类型的变量,恰好为null.在第一种情况下,没有关于参数的类型信息,因此编译器不知道应该调用哪个方法.您可以使用(List) null参数作为第一个案例.