高手解释下下面这段代码,自己感觉代码是在实例化的同时,直接对父类方法override了,但因为第一次看到这种代码,不敢肯定,高手近来指点下,这样写可以吗?有什么好处?实例化时可以同时override吗?
private ThreadLocal matchers = new ThreadLocal() {
protected synchronized Object initialValue() {
return new Perl5Matcher();
}
};
------解决方法--------------------------------------------------------
无名内部类
你的理解也没什么问题
------解决方法--------------------------------------------------------
这叫做匿名内部类(Anonymous inner class),直接在初始化时定义类,相当于:
class T extends ThreadLocal() { .... }
private ThreadLocal matchers = new T();
如果内部类只初始化一次,用匿名内部类可以简化代码。