为什么这不编译?无法为匿名类的String成员分配新值

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)

rge*_*man 5

该声明s = "New Value";不在方法范围内.它是匿名类,但它仍然是一个类.问题相当于

public class SomeSubClass {
   String s = "Value";
   s = "New Value";
}
Run Code Online (Sandbox Code Playgroud)

现在这个问题应该更加明显了.

将语句放在方法或构造函数中,或初始化s"New Value"而不是"Value".