Я новичок в Java и делаю базовое кодирование с нескольких дней. Сегодня, имея дело с переменными и внутренним классом, я застрял во время использования переменной non-final во внутреннем классе.Использование переменной non-final во внутреннем классе
Я использую рамки 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 {
}
}
==========
Теперь он не показывает каких-либо ошибок в Eclips. Я хочу знать, почему он теперь принимает переменную во внутреннем классе, хотя и не является окончательным. Разве это не ошибка с той же ошибкой? Будет ли это работать сейчас? Любая помощь будет отличной.
возможно дубликат [внутренний класс неконечной переменной Java] (http://stackoverflow.com/questions/11316954/inner-class-non -final-variable-java) –