我是Java新手,幾天以來一直在做一些基本編碼。今天,在處理變量和內部類時,我在使用innerclass中的非最終變量時卡住了。在內部類中使用非最終變量
我使用TestNG的框架,對我的工作,所以這裏是我想的情況下,
=========
public class Dummy extends TestNG {
@Override
public void setUp() throws Exception {
log.error("Setup Goes here");
}
@Override
public void test() throws Exception {
String someString = null;
try {
someString = "This is some string";
} catch (Exception e) {
log.error(e.getMessage());
}
Thread executeCommand = new Thread(new Runnable() {
@Override
public void run() {
try {
runComeCommand(someString, false); <=====ERROR LINE
} catch (Exception e) {
log.error(e.getMessage());
}
}
});
}
@Override
public void cleanUp() throws Exception {
}
}
======= ===
當我寫上面的代碼時,它會拋出一個錯誤,說「不能引用內部類中的非最終變量」。所以我實現了eclips提供的建議之一,即在父類中聲明someString變量。現在代碼看起來像這樣,
==========
public class Dummy extends TestNG {
String someString = null; <=====Moved this variable from test() to here
@Override
public void setUp() throws Exception {
log.error("Setup Goes here");
}
@Override
public void test() throws Exception {
<same code goes here>
}
@Override
public void cleanUp() throws Exception {
}
}
==========
現在,它沒有顯示出任何錯誤文摘。 我想知道,爲什麼它現在接受內部類的變量,即使它不是最終的。它不應該以相同的錯誤失敗嗎?現在這個工作嗎?任何幫助都會很棒。
可能重複http://stackoverflow.com/questions/11316954/inner-class-non -final-variable-java) – 2013-03-18 14:42:47