gpt4 book ai didi

java - 从 Java 中的参数/参数启动特定方法

转载 作者:行者123 更新时间:2023-11-29 22:40:48 25 4
gpt4 key购买 nike

我想从 Java 中另一个方法的参数/参数启动一个特定方法。

考虑以下代码:

void getResponse(String getUrl, final Activity activity) throws IOException {

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
.url(getUrl)
.build();

client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
call.cancel();
}

@Override
public void onResponse(Call call, Response response) throws IOException {

final String myResponse = response.body().string();

activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
JSONObject json = new JSONObject(myResponse);
//txtString.setText("First Name: "+json.getJSONObject("data").getString("first_name") + "\nLast Name: " + json.getJSONObject("data").getString("last_name"));
ReturnedString(json.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
});
}

public void run() 启动 ReturnedString(json.toString());但我想将“ReturnedString”作为getResponse 方法的一个参数,这样我就可以重用getResponse。这意味着 getResponse 变成类似这样的东西:

void getResponse(String getUrl, final Activity activity, Method method) throws IOException {

method(json.toString());

但它似乎不是这样工作的。

阿尔伯特

最佳答案

您可以使用 java.util.function.Consumer 作为方法的参数。

void getResponse(String getUrl, final Activity activity, final Consumer<String> consumer) throws IOException {

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
.url(getUrl)
.build();

client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
call.cancel();
}

@Override
public void onResponse(Call call, Response response) throws IOException {

final String myResponse = response.body().string();

activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
JSONObject json = new JSONObject(myResponse);
//txtString.setText("First Name: "+json.getJSONObject("data").getString("first_name") + "\nLast Name: " + json.getJSONObject("data").getString("last_name"));
//ReturnedString(json.toString());
consumer.accept(json.toString());

} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
});
}

这个方法的调用是:

  getResponse(url, activity, new Consumer<String>(){
@Override
public void accept(String s) {
ReturnedString(s);
}
});

关于java - 从 Java 中的参数/参数启动特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com