如果在类周围的代码中存在同名的局部变量、形参或字段,则报告从匿名类、内部类或局部类对超类字段的访问。 在这种情况下,看似访问了来自周围代码的元素,而实际上访问的是来自超类的字段。

为阐明代码的意图,建议对字段访问添加显式 super 限定符。

示例:


    class First {
      protected String ambiguous;
    }
    class Second {
      void foo(String ambiguous) {
        new First() {
          {
            System.out.println(ambiguous); // 访问的是字段,而不是形参
          }
        };
      }
    }

在应用快速修复后:


    class First {
      protected String ambiguous;
    }
    class Second {
      void foo(String ambiguous) {
        new First() {
          {
            System.out.println(super.ambiguous);
          }
        };
      }
    }