-3

我在问这个,因为 final 和 non-final 具有相同的范围,所以为什么 VARIABLE 在 java 中被添加为 final 变量 .. & 添加一些变量作为 final 的影响是什么,当它只在某个范围内访问时。

public void game()
{
    final String str = "a" ;
        //String str ="a" ;

    class hollow 
    {
        public void game ()
        {
            System.out.println(str);
        }
    }
}
4

1 回答 1

0

最终类和内部类http://en.wikipedia.org/wiki/Final_%28Java%29#Final_variables

当在方法体中定义匿名内部类时,在该方法范围内声明为 final 的所有变量都可以从内部类中访问。一旦它被赋值,最终变量的值就不能改变。这允许 Java 编译器在运行时“捕获”变量的值并将副本作为字段存储在内部类中。一旦外部方法终止并且它的堆栈帧被删除,原始变量就消失了,但内部类的私有副本仍然存在于类自己的内存中。

于 2013-03-05T12:12:58.227 回答