public class Test { int b = 0; void f(final int a) {
final int c;
class B { void print() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
} public static void main(String[] args) { } }
如题,为什么a和c都必须是final呢?能从本质上讲解一下吗?非常感谢!困扰菜鸟很久了
final int c;
class B { void print() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
} public static void main(String[] args) { } }
如题,为什么a和c都必须是final呢?能从本质上讲解一下吗?非常感谢!困扰菜鸟很久了
局部变量 方法参数 实例变量 静态变量
唯一的限制是只有上述内容被声明为final,才可以被访问这种限制的主要原因是与多线程问题相关,
以及确保从内部类中访问时所用这样的变量都有明确定义的值
想不到小明同学在J2SE领域也有不懂的东西啊
同时局部变量申明为final可以延长生存期,防止这个方法退出后该变量就消失了,导致内部类无法得到有效引用,这个问题3楼说的很清楚了。
局部变量 方法参数 实例变量 静态变量
唯一的限制是只有上述内容被声明为final,才可以被访问