Con*_*ty8 1 java variable-assignment anonymous-class
为什么我不能在下面的代码中为匿名类的String成员分配新值?
尝试编译时抛出错误:未解决的编译问题:令牌";"上的语法错误 ,,期待.然而String s = "Value";,当线s = "New Value";被注释掉时,这就行了.
public class Example {
// nested class to help us out
private class SomeClass {
}
// entry point
public static void main (String args[]){
Example e = new Example();
e.performTest();
}
// performs the test
private void performTest(){
// anonymous class to test
SomeClass nc = new SomeClass() {
String s = "Value";
s = "New Value";
};
}
}
Run Code Online (Sandbox Code Playgroud)
该声明s = "New Value";不在方法范围内.它是匿名类,但它仍然是一个类.问题相当于
public class SomeSubClass {
String s = "Value";
s = "New Value";
}
Run Code Online (Sandbox Code Playgroud)
现在这个问题应该更加明显了.
将语句放在方法或构造函数中,或初始化s为"New Value"而不是"Value".