为什么局部变量必须是最终变量或有效地是最终变量,而不是Java的Local Inner类的成员变量,为什么

Local Inner类只能引用final或有效的final变量。但是Local Inner类可以引用不是最终的或实际上不是最终的成员变量。这是一个示例:

public class Outer {
    private int x = 25;
    public int getX() {
        String message = "x is ";
        class Inner {
            private int x = Outer.this.x;
            public void printX() {
                System.out.println(message + x);
            }
        }
        //message = "Something else is ";
        x = 10;
        Inner in = new Inner();
        in.printX();
        return x;
    }

    public static void main(String[] args) {
        new Outer().getX();
    }
}
// It prints:
// x is 10

如果我取消注释使message无效的行,编译器会抱怨说“ 错误:(8,36)java:从内部类引用的局部变量必须是final或实际上是final ”。在这里,成员变量x不是最终变量,但是很好,为什么?

谢谢。

x13575102949 回答:为什么局部变量必须是最终变量或有效地是最终变量,而不是Java的Local Inner类的成员变量,为什么

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2882930.html

大家都在问