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

标签 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。

顺便说一句,这种类型的代码叫什么?我应该使用哪些关键字进行搜索?

非常感谢!

okhttp回调接口(interface): 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;
}

最佳答案

不确定具体问题是什么。但您使用的是匿名内部类。并且您只能从外部访问对象(如果它们是最终的)。对于 Java 8,您的回调参数应该是隐式的最终参数。如果您使用的是 Java 7(在 Android IIRC 中就是这样做的),您需要使用 Final 关键字标记您的参数。

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

关于java在内部函数中调用父级的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775376/

相关文章:

android - 如何检查整数数组中的android资源类型

android - 将 9png 图像放入哪个文件夹?

chrome 扩展中的 javascript 回调函数

java - 如何在 TALEND 中划分 tmap 中字段的值

Java,为什么我的图形超出了它们应该在的框架/范围?

java - 无法在 "/Library/Java/JavaVirtualMachines/..."处找到可执行文件

javascript - 在 javascript 回调函数中未获取现有对象属性的值

java - Hadoop Java - 将文件从Windows共享文件夹服务器复制到HDFS

java - android项目添加library后,xml标签还是 "unallowed in Android resource files"

c++ - 使用 ios_base::register_callback() 和 ios_base::event 检测流关闭