平台: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/