這裏是我的代碼:不能將值分配給最後一個變量
public String getGPA() {
String gpa = null;
final String responseBody1;
new Thread(new Runnable(){
public void run()
{
try {
HttpGet httpGet_gpa = new HttpGet("https://somedomain.com" + getRegId() + "&format=P");
HttpResponse response = httpClient.execute(httpGet_gpa);
responseBody1 = EntityUtils.toString(response.getEntity());
} catch (ClientProtocolException cpe) {
// Ignore
} catch (IOException ioe) {
// Ignore
}
}
}).start();
Document gpa_doc = Jsoup.parse(responseBody1);
Element p = gpa_doc.select("p").first();
gpa = p.text().replace("Your overall GPA (Grade Point Average) to date is:", "");
return gpa;
}
我得到這個錯誤:cannot assign a value to final variable responseBody1
。這是什麼意思?我嘗試刪除最終的修飾符,但它告訴我我需要做出最終修改,但是當我這樣做時,我得到了這個錯誤。任何線索爲什麼發生這種情況,以及如何解決它?
如果你不能修改它,'final'和'static'有什麼區別?另外,我需要在通過'EntityUtils.toString'加載一些數據後訪問'responseBody1',但我無法訪問數據,因爲我需要將該變量設置爲'final',並且一旦將其設置爲最終I無法將任何數據加載到該線程上,然後從線程外部讀取 – SomeProgrammer123 2014-11-14 23:40:05
靜態意味着在類中只會有一個變量的實例。這意味着這個類的任何對象都可以訪問相同的變量。關於responseBody1,我編輯了我的答案。只需用你的try catch創建一個靜態函數,然後在run()中調用該函數() – Gaktan 2014-11-14 23:43:48
@Gaktan這個靜態函數將做什麼?如果它返回'String',那麼線程中的'run()'方法將不得不爲函數結果分配一些東西,並且你還沒有解決問題。也許你應該發佈一個代碼示例來演示你的解決方案。 – ajb 2014-11-14 23:50:34