在本例中,看似访问了环绕的代码中的一个元素,实则访问了匿名类扩展的超类中的一个字段。
为阐明代码的意图,建议对字段访问添加显式的 super
限定符。
示例:
class First {
protected String test;
}
class Second {
void foo(String test) {
new First() {
{
System.out.println(test); // 访问了此字段,而不是此参数
}
};
}
}
在应用快速修复后:
class First {
protected String test;
}
class Second {
void foo(String test) {
new First() {
{
System.out.println(super.test);
}
};
}
}