局部内部类的final问题
1 /* 2 局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final的】。 3 4 备注:从Java 8+开始,只要局部变量事实不变,那么final关键字可以省略。 5 6 原因: 7 1. new出来的对象在堆内存当中。 8 2. 局部变量是跟着方法走的,在栈内存当中。 9 3. 方法运行结束之后,立刻出栈,局部变量就会立刻消失。 10 4. 但是new出来的对象会在堆当中持续存在,直到垃圾回收消失。 11 */ 12 public class MyOuter { 13 14 public void methodOuter() { 15 int num = 10; // 所在方法的局部变量 16 17 class MyInner { 18 public void methodInner() { 19 System.out.println(num); 20 } 21 } 22 } 23 24 }
浙公网安备 33010602011771号