内部类访问外部类的数据成员

本文解释了在Java中为何内部类使用外部类方法中的局部变量时,这些变量需要声明为final。通过示例代码说明了如果不这样做可能导致的问题,并阐述了final变量如何帮助确保内部类正确引用外部变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class A
{
    public static void main(String[] args)
    {
       final int x=11,y=22;
       class B
       {
           void f(){System.out.println(x+y);}
       }
       B k=new B();
       k.f();
    }    
}

我们都知道如果x,y变量不加上final,IDE会让我们无法通过代码检查,那为什么我们必须得加上final呢?

方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。

如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。

如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。

转载于:https://www.cnblogs.com/cha1r/p/3460851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值