java匿名内部类:java new一个新的类后面接{}有什么用途?

问:放
像下面这段代码,ThreadLocal在初始化的时候后面接了一个方法,我在自己的代码中也试了一下,可以再大括号中定义变量定义方法,但是外部是不能调用的,我想知道这样写除了初始化还有什么用途和意义呢?

private static ThreadLocal<Integer> seqNum = new ThreadLocal<Integer>(){
public Integer initialValue(){
return 0;
}
};

答:1:这个叫匿名内部类
2:通过这种写法创建了一个ThreadLocal没有名字的子类。这个子类中覆盖了ThreadLocal的原有的initialValue方法,同时也创建了这个子类的一个实例。
它的作用跟
class OutterClass {

private static class MyThreadLocal extends ThreadLocal<Integer> {  
    public Integer initialValue(){      
        return 0;      
    }     
}  

private static MyThreadLocal seqNum = new MyThreadLocal();  

}

等价,好处是你不用专门为这个子类(MyThreadLocal)想一个名字,代码量也少一点

3: 匿名内部类不能被引用,因为这个类的名字都没有,怎么引用呢?!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • java笔记 Main.java文件中的入口类(即包含main方法)的访问权限不一定非要设定为public,不加p...
    御风逍遥阅读 622评论 1 1
  • 前言 ThreadLocal很多同学都搞不懂是什么东西,可以用来干嘛。但面试时却又经常问到,所以这次我和大家一起学...
    liangzzz阅读 12,506评论 14 228
  • 转自 www.jianshu.com/p/bd1bfc0c34b8 作为一个程序员,在找工作的过程中,都会遇到笔试...
    灬黑客灬阅读 4,433评论 1 118
  • 2017.8.25 星期四 雨 我们的情绪都来自于信念系统,你有一个情绪,说明你有一个与之对应的信念系统,...
    名禅居阅读 186评论 0 0
  • 本以为以后不再有什么机会见他了,也就可以避免尴尬,结果喝酒后第二天学生会就有事情,再见到他,以为自己可以做到...
    唯恋宇阅读 411评论 0 0