gpt4 book ai didi

java - 在奇怪的代码中访问变量

转载 作者:行者123 更新时间:2023-12-02 03:46:33 24 4
gpt4 key购买 nike

我这里有一段奇怪的代码。我也不能说出它的名字,因为它被我自己误解了。

String [] x = new String[1];

someWorkableMethod(new CoolClass()
{
@Override
public void Something(String s) {
x[0] = s;
}
});

附:没有语法错误,反正无所谓所以,实际上变量 s 不为空(Log.d 返回正常结果),但是当我尝试 Log.d (x[0]) 它返回异常,这表明 x[0] 为空。如何在 Something() 中将 s 值写入 x[0]?感谢您的帮助! )

完整代码(如果需要)。

    public class Connection { 

private String key = "SMTH";
private static final String BASE_URL = "SMTH";
AsyncHttpClient client = new AsyncHttpClient();

private String post(String url, RequestParams params, AsyncHttpResponseHandler Handler) {
client.post(url, params, Handler);
//client.
return "";
}

public String createAuth(String login, String password, String device) {
RequestParams params = new RequestParams();
params.put("login", login);
params.put("password", password);
params.put("device", device);
params.put("key", this.key);
params.put("method", "createAuth");
final String[] res = new String[1];
post(BASE_URL, params, new TextHttpResponseHandler(){

@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBytes, Throwable throwable) {
super.onFailure(statusCode, headers, responseBytes, throwable);
}

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBytes) {
super.onSuccess(statusCode, headers, responseBytes);
}

@Override
public void onFailure(int i, Header[] headers, String s, Throwable throwable) {

}

@Override
public void onSuccess(int i, Header[] headers, String s) {
Log.d("LoginActivity", s);
res[0] = s.toString();
}
});
// Log.d("LoginActivity", res[0]);
return res[0];
}
}

最佳答案

我认为这是从匿名内部类访问/更改变量的解决方法。你可以改变

String [] x = new String[1];

final String [] x = new String[1];

这应该使它可以访问。我个人不喜欢这种方法,有更好的方法可以从匿名函数内部设置值。

此外,使用匿名内部类时要小心,如果它们的持续时间超过您的 Activity 的生命周期,可能会导致 Activity 泄漏

编辑

// Log.d("LoginActivity", res[0]);
return res[0];

您正在返回/记录 res[0] 的值,然后再分配它。 success() 在 http 请求完成之前不会被调用,但上面两行在此之前被调用,并且 res[0] 为 null

关于java - 在奇怪的代码中访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249354/

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