这似乎是一个简单的问题,但我受到 java 知识的限制。
考虑以下代码:
public void method1(){
Object1 obj = new Object1(){
@Override
public void innerMethod(Object response){
setList(response.list);
// Displaying the result of the getter is for sample purposes
System.out.println(getList().get(0).getName()); // This works and prints out the name of the first item.
}
};
obj.execute(); // Suppose execute method is pre-defined and just means it'll execute the `innerMethod`.
System.out.println(getList().get(0).getName()); // This returns null for the getList().
}
根据我对运行时执行的了解,list应该填充一次method1运行,因为innerMethod是第一个编写的。
请帮助我理解为什么第二次访问getList()返回 null 以及如何从innerMethod.
getList()另请注意,我在另一个类中使用它,它也返回 null。
编辑:以下是上述场景的完整代码。
public void callMusicAPI(){
Callback<SongList> callback = new Callback<SongListResponse>(){
@Override
public void onResponse(Call<SongListResponse> call, Response<SongListResponse> response) {
setSongListResult(response.body().getResults());
Log.d(TAG, "Number of Songs received: " + Songs.size()); // This works.
Log.d(TAG, "Actual Response from API Call: " + response.raw() + "" + success + " " + getSongListResult().get(1).getTitle()+getSongListResult().get(1).getRelease_date() ); //This works.
}
@Override
public void onFailure(Call<SongListResponse> call, Throwable throwable) {
Log.e(TAG, throwable.toString());
}
};
call.enqueue(callback);
if(call.isExecuted()) {
if (getSongListResult() != null) {
Log.d(TAG, "Data received in setter and getter: " + getSongListResult().get(2).getTitle() + getSongListResult().get(2).getRelease_date());
} else {
Log.e(TAG, "List is super null");
}
}
}
我希望在call.enqueue(callback)填充列表之后,情况并非如此。
请随意注意这是否是一个 java 问题,并且 setter-getter 在大多数情况下都可以正常工作,或者这是否特定于 api 调用的响应。如果,那么建议是否需要更改问题。
茅侃侃
海绵宝宝撒
相关分类