我是靠谱客的博主 飘逸小懒虫,最近开发中收集的这篇文章主要介绍方法中的匿名内部类只能访问final类型的局部变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天又看了一遍基础内容,看到了匿名内部类,发现了一段代码

class OuterClass{

public OutInterface doit(final String x){

class InnerClass implements OutInterface{

InnerClass(String s){

s = x;

System.out.println(s);

}

}

}

}


为什么doit传入参数是x呢。仔细想了一下,是这样的。InnerClass即内部类,它的生命周期和普通类一样,即创建的时候跟它分配一块内存,直到没有引用指向它的时候,它才会被GC回收。   那么再想想,如果 x是一个普通的局部变量,那么它在成员方法doit调用结束的时候,就死亡了。而内部类仍然还在使用它,这就产生了矛盾。     解决办法就是用final修饰,用final修饰后,编译器会把内部类需要访问的final局部变量做一份拷贝,做为该内部类对象的成员变量,这样就可以访问啦。

最后

以上就是飘逸小懒虫为你收集整理的方法中的匿名内部类只能访问final类型的局部变量的全部内容,希望文章能够帮你解决方法中的匿名内部类只能访问final类型的局部变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部