jdk1.7以及之前,内部匿名类形参前都要加final。
jdk1.8不需要,隐性加上了。
jdk1.7以及之前:
内部匿名类形参前加final,否则报错。
内部类和外部类是平行的,没有隶属关系。
外部类有可能会优先于内部类回收,如果不加final,参数就会被回收,导致于内部类无法使用。
加final后,以常量方式存储在常量池,不是在堆中,所以外部类回收后该参数依然存在。
引出话题:
在回答final方法的用途时候可以说明。被问到内部类时候可以说明。
项目中在消息模块或者其他模块用到线程池分发消息,在定义线程池里任务类时,用到了内部匿名类,参数1.8不加final也默认按final。