局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量就必须是final的(或者只赋值一次)
从Java8开始,只要局部变量事实不变那么final关键字可以省略
为什么需要保证变量为final,因为与生命周期有关,只有不变才能谈到复制在类内部;
1new出来的对象在堆内存当中;
2局部变量是跟这方法走的,在栈内存当中
3方法运行结束之后立刻出栈,局部变量就会立刻消失
4但是new出来的对象会在堆当中持续存在,直到垃圾回收消失;
局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量就必须是final的(或者只赋值一次)
从Java8开始,只要局部变量事实不变那么final关键字可以省略
为什么需要保证变量为final,因为与生命周期有关,只有不变才能谈到复制在类内部;
1new出来的对象在堆内存当中;
2局部变量是跟这方法走的,在栈内存当中
3方法运行结束之后立刻出栈,局部变量就会立刻消失
4但是new出来的对象会在堆当中持续存在,直到垃圾回收消失;