匿名内部类。你通过这种写法从ThreadLocal继承了一个匿名的子类,在这个子类中覆盖了ThreadLocal的initialValue方法,同时创建了这个子类的一个实例(因为这个子类是匿名的,你无法在后续的代码里引用,所以必须在定义时同时创建实例)。
class OutterClass {
private static class MyThreadLocal extends ThreadLocal<Integer> {
public Integer initialValue(){
return 0;
}
}
private static MyThreadLocal seqNum = new MyThreadLocal();
}
它的作用跟上面的代码等价,好处是你不用专门为这个子类(MyThreadLocal)想一个名字,代码量也少一点。