Java知识:变量在内部类中被使用的话必须在内部类外部声明为final

  • 内部类中使用但未声明的任何局部变量必须在内部类的正文之前明确分配
  • Java匿名内部类的方法中用到的局部变量都必须定义为final
  • 在JVM中,内部类不是直接调用方法的参数,而是内部类将传进来的参数通过自己的构造器备份到了自己的内部,自己内部的方法调用的实际是自己的属性而不是外部类方法的参数

举例:

class A{
	final string a = “aabbcc”;
	class B{
		print(a);
	}
}

类A中的内部类B的函数print()调用了定义在A中的参数a,这个时候如果不加final,就会出错。因为内部类被编译的时候会生成一个单独的内部类的.class文件,这个文件并不与外部类在同一class文件中

注意:
如果变量不被final修饰的话,内部类在使用时可以改变变量的值,这样就违背数据一致性的原则。因为从编程人员的角度来看他们是同一个东西,如果编程人员在程序设计的时候在内部类中改掉参数的值,但是外部调用的时候又发现值其实没有被改掉,这就让人非常的难以理解和接受,为了避免这种尴尬的问题存在,所以编译器设计人员把内部类能够使用的参数设定为必须是final来规避这种莫名其妙错误的存在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值