Java 实用程序类保存对接口的引用错误?
我正在查看一个类,该类负责从网站下载数据,或者在下载失败时从本地数据库获取数据 我的问题是,既然downloadListFromServer在本例中是一个异步调用,那么我们这样做是否不好。listener=listener;?因为可以在初始调用使用侦听器之前再次调用该方法。实际上,在第一次下载可以使用它之前,更改了侦听器中保存的引用 修改downloadListFromServer以接受一个侦听器并从getList传递它不是更好吗 注意:代码被剥离了,所以即使看起来像这样,我们也不希望在本例中直接调用downloadListFromServerJava 实用程序类保存对接口的引用错误?,java,oop,Java,Oop,我正在查看一个类,该类负责从网站下载数据,或者在下载失败时从本地数据库获取数据 我的问题是,既然downloadListFromServer在本例中是一个异步调用,那么我们这样做是否不好。listener=listener;?因为可以在初始调用使用侦听器之前再次调用该方法。实际上,在第一次下载可以使用它之前,更改了侦听器中保存的引用 修改downloadListFromServer以接受一个侦听器并从getList传递它不是更好吗 注意:代码被剥离了,所以即使看起来像这样,我们也不希望在本例中直
private MyListnernType listener;
public void getList(TextListType type, MyListnernType listener){
this.listener = listener; // is this bad?
downloadListFromServer(type); // uses
}
private void downloadListFromServer(final TextListType type){
Downloader.getTextList(type, new DownloadListener() {
@Override
public void downloadSucceeded( int statusCode, String response) {
listener.getTextListSucceeded(response);
}
});
}
};
是的,这是个坏主意。侦听器应作为参数传递给第二个方法 如果对象必须下载多个文件并始终警告同一个侦听器,则可以将侦听器保留为字段。但是,应该将侦听器传递给对象的构造函数,或者传递给
setListener()
方法,这将清楚地表明不能为两条不同的消息传递两个不同的侦听器