我有这段代码可从API获取信息
public class MainModel implements InterfacesSpace.MAIN_MODEL {
List<CountryModel> ARRAYS;
@Override
public List<CountryModel> Weather_Information() {
final Call<CountryModel.ResultModel> connection = INSTANCE_API_SERVICE.loadItems();
connection.enqueue(new Callback<CountryModel.ResultModel>() {
@Override
public void onResponse(Call<CountryModel.ResultModel> call, Response<CountryModel.ResultModel> response) {
countryModels = response.body().getCountryModels();
for (int i = 0; i < countryModels.size(); i++) {
CountryModel ye = new CountryModel("","","");
ye.setCountry(countryModels.get(i).getCountry());
ye.setCity(countryModels.get(i).getCity());
ye.setDegree(countryModels.get(i).getDegree());
ARRAYS.add(ye);
//Log.e("TESTSAIF" ,ARRAYS.get(0).getCity());
// Log.e("array size ", String.valueOf(ARRAYS.size()));
// Log.e("Size", String.valueOf(arrayList.size()));
}
}
@Override
public void onFailure(Call<CountryModel.ResultModel> call, Throwable t) {
Log.e("error",t.getMessage());
}
});
// return ARRAYS.get(0);
return ARRAYS;
}
以及在我的演示师课程中
@Override
public void Request_weather_Information() {
MODEL_INSTANCE.Establishing_DB_Communication();
Log.e("test", String.valueOf(MODEL_INSTANCE.getsizearry()));
// Log.e("Size", String.valueOf(MODEL_INSTANCE.Weather_Information().getCity()));
}
错误消息是:空对象引用上的'int java.util.List.size()' 为什么会发生
答案 0 :(得分:1)
如果异常来自for循环,则countryModels
可以为null。如果response.body().getCountryModels();
没有返回countryModels
的实例,则在.size()
上调用countryModels
会给您一个空指针。
如果异常来自Request_weather_Information()
方法或getsizearry()
方法,请尝试将ARRAYS
传递到RequestWeatherInformation()
方法和getsizearry()
方法中,例如RequestWeatherInformation( List<CountryModel> ARRAYS)
。由于这些方法是在单独的类中声明的,因此除非您将其传递,否则它们将无法从其他类访问ARRAYS大小。