클래스 주변 코드에서 이름이 동일한 지역 변수, 매개변수 또는 필드가 사용될 수 있는 익명, 내부 또는 지역 클래스의 상위 필드에 대한 액세스를 보고합니다. 실제로는 상위 클래스의 필드에 액세스한 경우에도, 주변 코드의 요소에 액세스한 것처럼 보일 수 있습니다.

코드의 의도를 명확히 하려면 명시적 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);
          }
        };
      }
    }