java回调函数的使用笔记

   在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,请大家多多指教。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在UVM中使用函数的步骤如下: 1. 首先,实现一个类(Callback Class),该类必须继承自uvm_callback类。这个类将包含函数的具体实现。 2. 在需要使用函数的地方,创建一个对象(callback object)。可以通过用uvm_callback_pool类的add_callback方法来添加对象。 3. 在适当的时机,比如在特定的事件发生时,用uvm_callback_pool类的execute_callbacks方法。这将触发所有已添加的对象的函数。 4. 在函数中,执行所需的操作。函数通常具有几个参数,用于传递相关的信息。 总之,使用函数可以在特定的事件发生时执行特定的操作,提供了灵活性和可扩展性。通过实现类和添加对象,可以将自定义的逻辑与UVM框架集成起来。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [UVM中callback的使用](https://blog.csdn.net/hh199203/article/details/126662458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [UVM:callback 机制(似乎有更简单的替代)](https://blog.csdn.net/Starry__/article/details/123212444)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【SystemVerilog】路科验证V2学习笔记(全600页).pdf](https://download.csdn.net/download/weixin_44857476/15468587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值