Je me sens stupide demandant ceci et recherché similar questions mais je ne comprends pas pourquoi je suis en mesure de définir private String title
mais incapable de l'obtenir.Java - Impossible d'obtenir la chaîne privée qui a été définie à partir d'une méthode locale
J'ai une classe qui effectue une requête HTTP pour obtenir du JSON, l'analyser et définir les variables d'instance de processResponse()
. Lorsque j'utilise GWT.log()
à l'intérieur setTitle()
et getTitle()
, la console montre que setTitle()
a la valeur mais getTitle()
est undefined
. J'utilise GWT si cela fait une différence.
Cette classe sera utilisée pour créer des objets et ces variables seront utilisées tout au long du programme. Qu'est-ce que je fais mal ici?
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;
}
}
Dans la méthode 'processResponse', où/comment sont vous accédez à la variable 'output' qui est utilisée comme paramètre de' setTitle'? –
Si 'setTitle' est appelé et définit une valeur particulière, et qu'un appel ultérieur à' getTitle' montre 'null', alors ce n'est pas la même * instance * de' Requester'. Le code appelant effectue l'appel sur un autre objet 'Requester'. Insérez l'instruction de log dans le constructeur pour confirmer, puis regardez le code qui fait les appels, puisque le problème est * là *, pas ici dans ce code. – Andreas
@ChrisSprague J'ai déclaré une chaîne locale pour l'affectation - 'String output = jsonArray.get (0) .isObject(). Get (" title "). ToString();' –