8

这怎么可能?如何更改标记为最终的变量?

public class Main
{
    public static void main(String[] args)
    {
        final int NUM;

        NUM = 22;
        NUM = 33;

        System.out.println(NUM);
    }

}

我在 Android 中使用 AIDE 应用程序......它成功编译并打印33

4

1 回答 1

4

如果你能做到这一点,那是 AIDE 应用程序中的一个错误。您应该将其报告给开发人员。符合 JLS 的 Java 实现不允许重新分配final变量(像这样)。

如果您想为他们提供 JLS 规范参考以支持您的错误报告:

JLS 4.12.4final变量

变量可以声明为final。最终变量只能分配一次。如果最终变量被分配给它是一个编译时错误,除非它在分配之前立即被明确地未分配(§16(定义分配))。

于 2018-09-16T13:06:47.130 回答