Java - 无法获取从本地方法设置的私有字符串
Java - Unable to get private String that was set from a local method
我觉得问这个问题很愚蠢并搜索了 similar questions 但我不明白为什么我可以设置 private String title
但无法获取它。
我有一个 class 发出 HTTP 请求以获取一些 JSON,解析它并设置来自 processResponse()
的实例变量。当我在 setTitle()
和 getTitle()
中使用 GWT.log()
时,控制台显示 setTitle()
具有值但 getTitle()
是 undefined
.
我正在使用 GWT,如果有区别的话。这个 class 将用于创建对象,这些变量将在整个程序中使用。我在这里做错了什么?
public class Requester {
//other variables
private String title;
public Requester(UrlBuilder url) {
this.setURL(url);
this.generateRequest();
}
public void setURL(UrlBuilder url) {
this.url = url;
}
private void generateRequest() {
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url.getUrl()));
builder.setHeader("Authorization", authHeader);
try {
builder.sendRequest(null, new RequestCallback() {
// onError() method
public void onResponseReceived(Request request, Response response) {
processResponse(response);
}
});
} catch (RequestException e) {
//exception code
}
}
private void processResponse(Response response) {
//code to get title and assign it to String output
setTitle(output);
}
private void setTitle(String output) {
this.title = output;
}
public String getTitle() {
return this.title;
}
}
我在 的帮助下解决了问题。
在我调用 getTitle()
时,对 generateRequest()
的异步调用尚未完成。由于当时未设置 title
,因此我得到 undefined
.
根据另一个问题的建议,我修改了我的代码以执行一个方法,其中 title
在 generateRequest()
完成后作为参数传递 -
public void onResponseReceived(Request request, Response response) {
MyOtherClass.newMethod(processResponse(response));
}
我觉得问这个问题很愚蠢并搜索了 similar questions 但我不明白为什么我可以设置 private String title
但无法获取它。
我有一个 class 发出 HTTP 请求以获取一些 JSON,解析它并设置来自 processResponse()
的实例变量。当我在 setTitle()
和 getTitle()
中使用 GWT.log()
时,控制台显示 setTitle()
具有值但 getTitle()
是 undefined
.
我正在使用 GWT,如果有区别的话。这个 class 将用于创建对象,这些变量将在整个程序中使用。我在这里做错了什么?
public class Requester {
//other variables
private String title;
public Requester(UrlBuilder url) {
this.setURL(url);
this.generateRequest();
}
public void setURL(UrlBuilder url) {
this.url = url;
}
private void generateRequest() {
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url.getUrl()));
builder.setHeader("Authorization", authHeader);
try {
builder.sendRequest(null, new RequestCallback() {
// onError() method
public void onResponseReceived(Request request, Response response) {
processResponse(response);
}
});
} catch (RequestException e) {
//exception code
}
}
private void processResponse(Response response) {
//code to get title and assign it to String output
setTitle(output);
}
private void setTitle(String output) {
this.title = output;
}
public String getTitle() {
return this.title;
}
}
我在
在我调用 getTitle()
时,对 generateRequest()
的异步调用尚未完成。由于当时未设置 title
,因此我得到 undefined
.
根据另一个问题的建议,我修改了我的代码以执行一个方法,其中 title
在 generateRequest()
完成后作为参数传递 -
public void onResponseReceived(Request request, Response response) {
MyOtherClass.newMethod(processResponse(response));
}