Java中内部类中使用外面变量为什么final修饰?
2016-11-01 11:34
288 查看
所以final从语法上约束了实际上两个不同变量的一致性(表现为同一变量).
我的理解:
例如这样的代码:
其实执行完毕了,执行的只是原来str的一个镜像文件,根本不会影响原来的变量。
内部类是属于外部类的一个组件
我想,如果外部类的变量不是final的,那么在第一次生成内部类对象之后,内部类的方法执行结果都会随着外部类该变量的改变而改变。但是该变量应该是属于内部类的一个组件,也就是说你随意操作外部类对象就可以改变它生成的内部类对象,这显然是错误的。所以我们将使用的外部类对象定义为final,保证了外部类和内部类的表现的一致性。
不是很懂。原文链接:
我的理解:
例如这样的代码:
public void test(String str){ str="abc"; }
其实执行完毕了,执行的只是原来str的一个镜像文件,根本不会影响原来的变量。
内部类是属于外部类的一个组件
class Outer{ private String str; class Inner{ public void test(){ System.out.println(str); } } public static void main(String[] args){ Outer.Inner in=new Outer().new Inner(); this.str="ad"; thsi.str="bc"; } }
我想,如果外部类的变量不是final的,那么在第一次生成内部类对象之后,内部类的方法执行结果都会随着外部类该变量的改变而改变。但是该变量应该是属于内部类的一个组件,也就是说你随意操作外部类对象就可以改变它生成的内部类对象,这显然是错误的。所以我们将使用的外部类对象定义为final,保证了外部类和内部类的表现的一致性。
不是很懂。原文链接:
相关文章推荐
- 局部内部类访问外部变量为什么需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 关于java为什么在Method中局部内部类或者匿名内部类调用Method中定义的变量要用final修饰?
- 为什么内部类访问的外部变量需要使用final修饰
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- java中内部类访问局部变量的时候,为什么变量必须加上final修饰
- 为什么局部变量必须以final修饰(或者有final实效:java8)才可以在内部类中使用?
- 为什么内部类访问的外部变量需要使用final修饰
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- Java方法内部类为什么需要方法形参或变量是final的?
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- 【Java面试题】2 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析
- Java final关键字有哪些用法 (主要问你内部类形参为什么用final修饰)
- 解析——java匿名内部类使用外部变量时,外部变量必须是final
- 匿名内部类为什么要使用final类型变量
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰