星空网 > 软件开发 > ASP.net

java内部类,局部变量加Final分析

之前在使用内部类,对外部局部变量要加final一直不是特别理解,今天心血来潮想要弄个明白。

 1 public class Outer { 2   public Parent method() { 3     final int n = 8; 4      5     class Inner extends Parent{ 6       public void show() { 7         System.out.println("number:" + n); 8       } 9     }10     return new Inner();11   }12   public static void main(String[] args) {13     Outer o = new Outer();14     Parent p = o.method();15     p.show();16   }17 }18 19 class Parent{20   public void show() {21     System.out.println("parent");22   } 23 }

首先我在method方法里面定义了一个int类型的变量跟Inner(类名)内部类。然后在Inner里面写了

show()方法引用了n变量,加上了final修饰。然后我返回了Inner对象,注意分析此时method方法

执行完后变量n已经被销毁了。那么n变量又怎么还在呢?难道加上final就会一直驻留在内存中?于

是我上网查final的生命周期,发现不是。然后在一篇技术帖中找到答案。

如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用

是final 的。经研究,Java虚拟机的实现方式是,编译器会探测局部内部类中是否有直接使用外部

定义变量的情况,如果有访问就会定义一个同类型的变量,然后在构造 方法中用外部变量给自己

定义的变量赋值。引用至   http://developer.51cto.com/art/200906/128214.htm




原标题:java内部类,局部变量加Final分析

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

跨境平台做测评、采退、Lu卡、lu货要怎么做安全?:https://www.kjdsnews.com/a/1515293.html
亚马逊2023夏季热卖清单揭秘:11款女性时尚单品数据曝光!:https://www.kjdsnews.com/a/1515294.html
赋能企业高效海外差旅管理 提升员工出差体验:https://www.kjdsnews.com/a/1515295.html
抖音不能只靠流量:https://www.kjdsnews.com/a/1515296.html
出口值暴增超20倍!这个常被忽略的市场,真香:https://www.kjdsnews.com/a/1515297.html
Q2手游丨东南亚登顶,小微网红受青睐,TikTok增长迅猛!:https://www.kjdsnews.com/a/1515298.html
2024.04.18亚马逊选品推荐(仅供参考):女装蛋糕连衣裙:https://www.kjdsnews.com/a/1842234.html
欧洲市场疯了,订单排到7、8月!:https://www.kjdsnews.com/a/1842235.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流