Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实用程序类保存对接口的引用错误?_Java_Oop - Fatal编程技术网

Java 实用程序类保存对接口的引用错误?

Java 实用程序类保存对接口的引用错误?,java,oop,Java,Oop,我正在查看一个类,该类负责从网站下载数据,或者在下载失败时从本地数据库获取数据 我的问题是,既然downloadListFromServer在本例中是一个异步调用,那么我们这样做是否不好。listener=listener;?因为可以在初始调用使用侦听器之前再次调用该方法。实际上,在第一次下载可以使用它之前,更改了侦听器中保存的引用 修改downloadListFromServer以接受一个侦听器并从getList传递它不是更好吗 注意:代码被剥离了,所以即使看起来像这样,我们也不希望在本例中直

我正在查看一个类,该类负责从网站下载数据,或者在下载失败时从本地数据库获取数据

我的问题是,既然downloadListFromServer在本例中是一个异步调用,那么我们这样做是否不好。listener=listener;?因为可以在初始调用使用侦听器之前再次调用该方法。实际上,在第一次下载可以使用它之前,更改了侦听器中保存的引用

修改downloadListFromServer以接受一个侦听器并从getList传递它不是更好吗

注意:代码被剥离了,所以即使看起来像这样,我们也不希望在本例中直接调用downloadListFromServer

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()
方法,这将清楚地表明不能为两条不同的消息传递两个不同的侦听器