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

时间:2014-02-19 23:17:18

标签: 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";
        };
    }
}

1 个答案:

答案 0 :(得分:5)

语句s = "New Value";不在方法中。它是匿名类,但它仍然是一个类。问题相当于

public class SomeSubClass {
   String s = "Value";
   s = "New Value";
}

现在问题应该更加明显了。

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