Java 的匿名类初始化块中如何访问同名参数?

因为写过类似下面的一段代码来实始化一个匿名实例

看上面的 buildTest() 方法中的 this.name = name 希望能把方法参数 final String name 中的 name 值赋值给 this.name, 但是无效,this.name = name 是在把自己赋给自己。

因为想像通常的 setter 方法的写法那样

实例方法中即使声明了与实例或类变量同名的局部变量,不带 this 或类名前缀就能访问到局部变量。

回到第一个例子中,new Test(){{...}} 声明的是一个匿名类,这其实是涉及到的是在匿名类中如何访问外面的局部变量,如果把 buildTest() 参数名变换一下就没问题的

目前还未找到第一个例子的匿名类初始块中如何访问重名的 buildTest() 参数 name,似乎是被彻底覆盖掉了。

或者像下面这个例子

代码规范上最好不要这么写,命名上最好区分开来,但怕由此可能造成的 bug.

不知是否有办法在匿名类中访问到外层同名变量?

类别: Java/JEE. 标签: . 阅读(70). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar