java 在方法中定义内部类 访问方法的参数或方法中的变量

Python014

java 在方法中定义内部类 访问方法的参数或方法中的变量,第1张

亲测1.6 1.7都会编译出错.

Java 8的新特性,但其实只是让你方便一点,在你这个内部类里效果等同于final

比如,如果你想修改x或info

a = 100

那么会告诉你:

Local variable defined in an enclosing scope must be final or effectively final

注意后面说的effectively final,就是说表面上没有final修饰,但实际上必须和final有相同的效果

Java语法上是可以的,成员变量可以用public、private、protected任何一个修饰。方法内部的局部变量只在方法内部可见,因此不能修饰。但在实践上,成员变量通常不允许使用public修饰符修饰,这主要是人为规定的编码规则,其目的在于隐藏类的实现细节,达到面向对象的封装的目的。从根本上说这种规定是为了防止类外部直接访问内部变量,降低类间耦合度,方便后续代码维护。