java回调函数的使用笔记

本文通过一个网络请求的例子详细解析了Java中回调函数的使用方法。包括定义回调接口、实现HTTP请求处理类及请求控制类,并提供了完整的测试代码。

   在java和android开发过程中经常遇到回调函数,一直对回调函数不是很理解,今天自己写了个例子,访问网络请求数据的demo。概念的东西就不多说了,直接上代码了。

1、创建回调接口

package pattern;

/**
 *
 * @author xuzhiwei
 */
public interface ICallBack {
    public void onSuccess(String content);
    public void onFailure(String errorMsg);
}


2、创建调用http请求的类,进行http请求处理。

package pattern;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author xuzhiwei
 */
public abstract class Request { 
    public void onSuccess(String resposeBody){}
    public void onFailure(String exceptionMsg){}
    
    public Request(){}
    
    public void execute(String path){
        try {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            
            conn.setConnectTimeout(3*1000);
            conn.setReadTimeout(2000);
            int responseCode =  conn.getResponseCode();
            onResponse(responseCode);
        } catch (MalformedURLException ex) {
            onFailure(ex.getMessage()); 
        } catch (IOException ex) {
           onFailure(ex.getMessage()); 
        } 
    }
    
    public void onResponse(int code){ 
        if(code == 200){
            onSuccess("发送请求成功!");
        }else{
            onFailure("发送请求失败!请求代码:"+code);
        }
    }
     
}


3、创建请求控制类

package pattern;

/**
 *
 * @author xuzhiwei
 */
public class Ranking {
    private  String path;
    
    public Ranking(String path){
        this.path = path;
    } 
    
    public  void list(final ICallBack call) { 
        
        Request request = new Request() {
            @Override
            public void onSuccess(String resposeBody) {
                if (null != call) {
                    call.onSuccess(resposeBody);
                } else {
                    onFailure("未初始化回调函数");
                }
            }

            @Override
            public void onFailure(String exceptionMsg) {
                if (null != call) {
                    call.onFailure(exceptionMsg);
                }
            }
        };

        request.execute(path);
    }
}


 

4、创建测试类进行测试

package pattern; 
/**
 *
 * @author xuzhiwei
 */
public class TestCallBack {

    public static void main(String[] args) {
        
        Ranking ranking = new Ranking("http://localhost/net/index.php");
        
        ranking.list(new ICallBack() {

            @Override
            public void onSuccess(String content) {
               complete(content);
            }

            @Override
            public void onFailure(String errorMsg) {
                complete(errorMsg);
            }
        });
    }
    
    private static void complete(String msg)
    {
        System.out.println("------请求完成---->"+msg);
    }
}


5、运行下结果

run:
------请求完成---->发送请求成功!
成功生成(总时间:0 秒)


 

以上就是整个回调函数的处理过程了。第一次写blog,请大家多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值