android 使用 kotlin lambda 表达式,可以更好替代原有接口的写法

作为长期从事开发人员来说,一门高效的简洁开发语言,在开发中的体验感受远远是不一样的。没有对比,就没有伤害。

我在可以用lambda 表达式,轻松搞定在java 使用的接口回调问题

 在java 中,

    public interface ResultListener {
        void onSuccess();
        void onFail();
    }
   public static void order(String orderId,final ResultListener listener) {
        HttpHelper.getInstance().order(orderId, new TestCallBack() {
            @Override
            public void onResponse(String response, int id) { 
            try {
               JSONObject jsonObject = new JSONObject(response);
                 if (HttpConfig.SUCCESS == jsonObject.optInt("status")) {
                        listener.onSuccess()
                    } else {
                       listener.onFail()
                   }
                } catch (JSONException e) {
                e.printStackTrace();
               }
           }
            @Override     
       public void onError(Call call, Exception e, int id) {    
            super.onError(call, e, id);      
          listener.onFail();   
         }     
   });  
  }
 Utils.order(orderId, new Utils.ResultListener() {
                   @ override 
                    public void  onSuccess() {
                        loadData(type)
                    }
                    @override 
                    public void onFail() {
                        ToastUtils.showShortMsg("提交失败,请稍后再试")
                    }
                })

在Kotlin 我们可以使用更加简洁的方式,实现上面的回调写法,写同样的逻辑如下:直接创建一个Kotlin 文件,这里类似与java 中的静态类,而且在异常处理中,我们自主性的处理异常,这样使用起来是不是很方便。

internal fun order(orderId:String,callBack:()->Unit,failCallBack:()->Unit){
        HttpHelper.getInstance().order(orderId,object: TestCallBack{
             override fun onResponse(response:String,id:Int) { 
               if (HttpConfig.SUCCESS == JSONObject(resonse).optInt("status")) callBack()  else  failCallBack();
          }
             override  fun onError(call:Call, Exception e,id:Int) {   
             super.onError(call, e, id);   
              failCallBack();     
         }   
        }) 
 }
oder(orderId,{ 
 loadData(type)
 },{
   ToastUtils.showShortMsg("提交失败,请稍后再试")
 })






你可能感兴趣的:(Android,java,kotlin)