2016 - 2024

感恩一路有你

final修饰的变量存在哪 匿名内部类访问局部变量,为什么final?

浏览量:2654 时间:2021-03-17 22:12:32 作者:admin

匿名内部类访问局部变量,为什么final?

这是变量作用域的问题,因为匿名内部类出现在方法内部。如果要访问方法的参数或方法中定义的变量,则必须将这些参数和变量修改为final。

尽管匿名内部类在方法内部,但内部类被编译为外部。内部这意味着内部类的位置和外部类中的方法处于同一级别。外部类中方法中的变量或参数只是方法的局部变量,这些变量或参数的作用域仅在方法内部有效。由于内部类和方法在编译时处于同一级别,因此只有在方法中的变量或参数是final时才能引用内部类。

为什么内部类访问的外部变量需要使用final修饰?

方法中的局部变量将在方法结束后释放。Final确保变量始终指向对象。首先,内部阶级和外部阶级处于同一水平。因为内部类是在方法中定义的,所以在方法执行后不会销毁跟随者。问题是,如果外部类的方法中的变量没有定义final,那么在执行外部类的方法时,局部变量将是GC。但是,在执行内部类的方法之前,找不到它引用的外部变量。

final修饰的变量存在哪 java修饰局部变量 final修饰的变量

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。