java中关于匿名内部类访问外部局部变量要加final的问题

首先当一个匿名内部类访问外部得到局部变量的时候,需要引用外部的局部变量的引用,当外部的对象被gc的时候,匿名内部类则相当于引用了一个不存在的地址,在说一说加final之后的变量存放位置,当一个变量被final修饰的时候,那么这个变量就是存在于常量池里,那么这个变量就不属于这个类,这样的话当外部变量引用这个变量的时候,就指向常量池中的常量,之后在匿名内部类里,如果引用这个变量,实际上是将这个变量的地址拷贝了一份,但他们实际上指向的都是常量池中的常量,所以,这样的话不管对象有没有被gc,匿名内部类中指向的始终是有效的地址
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页