这种说法是正确的,虽然我不懂楼主所说的局部内部类什么意思?
局部变量其实是在它的父级函数或对象被调用时,它就跟着在栈内存中创建,而后凡是使用它,使用的其实都是它的地址,说copy也可以吧!
而当方法中的内部类访问方法中的局部变量时, 这个变量必须被final修饰,因为生命周期的不同,在方法中定义的局部变量在方法运行结束之后生命周期结束,不能再被访问。方法中的内部类创建的对象有可能生命周期比这个局部变量长,例如这个对象被作为返回值返回,那么方法运行结束之后还可以访问这个对象。这时变量被销毁了,对象还在,如果在对象的某个方法内访问这个变量就访问不到了。我们需要使用final修饰这个变量,被final修饰的变量会一直存储在内存中,方法运行结束之后不被销毁。
而final局部变量就是将变量最终话,这样变量的生命周期就不会低于方法中的内部类了,并且final修饰的局部变量也不能被修改了 |