美文网首页
Java的回调

Java的回调

作者: 狮_子歌歌 | 来源:发表于2016-05-20 22:21 被阅读63次

所谓回调:就是A类中调用B类中的某个方法,然后B类中反骨来调用A类中的方法D,D这个方法就叫做回调方法。

  1. class A实现了接口CallBack.
  2. class A包含一个class B的引用b.
  3. class B 有一个参数为callback的方法f(Callback callback).
  4. A的对象a调用B的方法f(Callback callback).
  5. 然后b就可以在f(Callback callback)方法中调用A中的方法.

代码实现

接口CallBack

public interface HttpCallbackListener {
    public void onFinish(String respone);
    public void onError(Exception e);
}

class B

public class HttpUtil {
    public static void sendHttpRequest(final String adress, 
        final HttpCallbackListener listener) {
        new Thread(new Runnable() {
            public void run() {
                HttpURLConnection connection = null;
                try {
                    URL = url = new URL(address);
                    //得到HttpURLConnection对象
                    connection = (HttpURLConnection) url.openConnection();
                    //设置HTTP请求的方式:GET(表示希望从服务器获取数据)
                    //或者POST(表示希望提交数据给服务器)
                    connection.setRequestMethod("GET");
                    //设置连接超时,以毫秒为单位
                    connection.setConnectionTimeout(8000);
                    //设置读取超时,以毫秒为单位
                    connection.setConnectionReadTimeout(8000);
                    //设置URLConnection对象是否允许输入,
                    //HttpURLConnection是URLConnection的子类
                    connection.setDoInput(true);
                    //设置URLConnection对象是否允许输出
                    connection.setDoOutput(true);
                    //获取服务器返回的输入流
                    InputStream in = connection.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while((line = reader.readLine()) != null) {
                        response.append(line);
                    }
                    if(listener != null) {
                        listener.onFinish(response.toString());
                    }
                }catch (Exception e) {
                    if(listener != null) {
                        listener.onError(e);
                    }
                }finally {
                    if(connection != null) {
                        connection.disconnect();
                    }
                }
            }
        }).start();
    }
}

class A

public class A implements HttpCallbackListener{
    private String address;
    HttpUtil.sendHttpRequest(adress, this);
    //回调方法
    onFinish(String response) {
        //do something
    }
    //回调方法
    onError(Exception e) {
        //do something
    }
}

上述代码摘自《第一行代码》,其中class A实现了接口HttpCallbackListener并且有一个HttpUtil的引用。而在HttpUtil中有一个参数带HttpCallbackListener对象的静态方法。当A调用了HttpUtil对象的sendHttpRequest方法时,HttpUtil就可以调用在A实现接口HttpCallbackListener的方法(onFinish和onError)。

相关文章

  • java中的回调

    在java中回调分为异步回调和同步回调

  • Kotlin多参数回调

    1、单个参数回调: 2、多个参数回调: 3、java中调用Kotlin的回调 1、java中调用Kotlin回调 ...

  • Kotlin使用接口回调

    1.Java中的接口回调实现(支持多方法回调) 声明回调接口,初始化接口 使用接口回调(无参数) 使用接口回调(带...

  • Thinging in Java阅读时遇到的问题

    菜鸟教程Java回调机制解读Java回调机制总结内部类标识符JAVA foreach和普通for循环是否需要判断为...

  • 回调-Java

    回调-Java 回调是在平常的工作中常常遇到的方法。在我们进行服务器编程或者一些方法调用的时候,我们会选择同步方法...

  • Java回调

    回调callback 回调又称钩子函数 (hook), 模板方法, 利用对象的多态特性, 先定义函数结构, 再利用...

  • Java回调

    java接口 接口的作用:如果几个类有一个相同的方法,但是方法的实现不一样,这个时候就可以用接口的引用来做一个统一...

  • java回调

    Class A调用Class B中的X方法,在执行ClassB中X方法时,调用ClassA中Y方法。

  • java回调

    一 . 前言 正在看java编程思想,感觉对自己提升很大,重新总结下回调。 二.java 多态和向上转型 下面的程...

  • Java回调

    回调示例代码 被调用方 Reponse::handle 回调接口(函数式接口) 请求方 打印结果

网友评论

      本文标题:Java的回调

      本文链接:https://www.haomeiwen.com/subject/pibnrttx.html