匿名、内部、またはローカルクラスを囲む外側のコードに同じ名前のローカル変数、パラメーター、フィールドがあり、それらのクラスからスーパークラスのフィールドにアクセスしている場合に報告します。 このような場合、実際にはスーパークラスのフィールドへのアクセスであっても、外側のコードの要素がアクセスされているように見えるかもしれません。

コードの意図を明確にするために、フィールドのアクセスに明示的な 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);
          }
        };
      }
    }