java为什么匿名内部类的参数引用时final?


参数的引用就要涉及到闭包(在java中,一个类就是一个闭包)以及引用的‘对象’

是capture-by-value还是capture-by-reference

对于普通内部类,是capture-by-reference,

内部类可以显示创建对象,通过引用可以改变外部类变量的值,做到内外变量的同步,也就没有final


java为什么匿名内部类的参数引用时final?

对于匿名内部类,是capture-by-value,

内部类不能显示构造对象,也就没有引用,不能改变外部类的变量,导致内外变量的不同步,所以干脆一刀切,给外部变量一个final修饰

java为什么匿名内部类的参数引用时final?


参考 https://www.zhihu.com/question/21395848/answer/110829597