gpt4 book ai didi

java - 方法中内部类的返回值

转载 作者:行者123 更新时间:2023-12-01 21:50:40 25 4
gpt4 key购买 nike

我正在为 Android 应用程序构建登录系统。我正在使用OkHttp连接到我的服务器并获取 JSON 响应。

我定义了一个带有登录返回数据的类(现在只是根据用户是否存在于数据库中的真/假响应),然后编写了连接服务器的代码,如下所示:

class UserLogin {
boolean status;

public void setStatus(boolean status) {
this.status = status;
}

public boolean getStatus() {
return status;
}
}

public class ClientServerInterface {

OkHttpClient client = new OkHttpClient();

boolean login(Request request) {
final Gson gson = new Gson();
client.newCall(request).enqueue(new Callback() {
UserLogin login;
@Override
public void onFailure(Call call, IOException e) {

}

@Override
public void onResponse(Call call, Response response) throws IOException {
login = gson.fromJson(response.body().charStream(), UserLogin.class);
login.setStatus(login.status);
}
});
// need to return the boolean response (status) here
}
}

Request 变量传递给 login 方法的代码工作得很好。我希望 login 返回一个 boolean 值响应,以便我可以将其传递给其他类中的其他方法。

但是,由于 UserLogin 对象是在 callback 中定义的,因此我无法在父方法中访问它。我已经创建了一个 getStatus 方法,但不确定如何正确使用它来获取主 login 方法中的状态。

最佳答案

The code which passes the Request variable to the login method works perfectly. I want login to return a boolean response so that I can pass that to other methods in other classes.

你不能。 enqueue 以异步方式执行代码。您不知道回调何时被调用。您可以做的是将回调作为参数添加到您的登录方法中。例如

 boolean login(Request request, final Callback callback) {

并将其传递给入队

client.newCall(request).enqueue(callback);

或者手动调用回调。例如

@Override
public void onResponse(Call call, Response response) throws IOException {
if (callback != null) {
callback.onResponse(call, response);
}
}

在这两种情况下,登录的调用者都会收到所提供对象的回调,并根据收到的内容来决定采取哪些操作

关于java - 方法中内部类的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274746/

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