java

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

2016-12-14  本文已影响41人  小竹子爱广播

问:放
像下面这段代码,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: 匿名内部类不能被引用,因为这个类的名字都没有,怎么引用呢?!

上一篇下一篇

猜你喜欢

热点阅读