java调用父内部函数中的回调函数

时间:2015-11-18 08:47:58

标签: java android callback

平台:android

我是java的新手,我想做这样的事情:

private void PostToServer(final Callback mycallback){

    OkHttpClient client= new OkHttpClient();
    //some codes....
    client.newCall(req).enqueue(new Callback(){
       private void onFailure(Request req,IOException e){
           tip("SERVER ERROR!");
       }
       private void onResponse(Response resp){
          Call mycallback(resp); //how to call the callback?
       }
    }
}

我想像这样使用它:(创建一个自己的界面?)

PostToServer(new callback(){
    @Override
    private void onSuccess(String resp){
      if(resp==1){
         tip("SERVER CONNECTED!");
      }
    }
});

目标:在onResponse()中调用mycallback。

btw这种类型的代码叫什么?我应该使用哪些关键字进行搜索?

非常感谢!

okhttp回调界面: direct link

package com.squareup.okhttp;    
import java.io.IOException;

public interface Callback {    
  void onFailure(Request request, IOException e);    
  void onResponse(Response response) throws IOException;
}

1 个答案:

答案 0 :(得分:1)

不确定具体问题是什么。但是你正在使用一个匿名的内部类。并且如果它们是最终的,您只能从外部访问对象。使用Java 8,您的回调参数应该是隐式final。如果您使用的是Java 7(在Android IIRC的情况下使用它),则需要使用final关键字标记参数。

如果你问的是你想要实现的设计模式......你正在做的是类似于函数式编程,因为你传递了应该作为回调对象执行的函数。