为什么我不能在下面的代码中为匿名类的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";
};
}
}
答案 0 :(得分:5)
语句s = "New Value";
不在方法中。它是匿名类,但它仍然是一个类。问题相当于
public class SomeSubClass {
String s = "Value";
s = "New Value";
}
现在问题应该更加明显了。
将语句放在方法或构造函数中,或将s
初始化为"New Value"
而不是"Value"
。