@ApiStatus.OverrideOnly로 표시된 API 메서드 호출을 보고합니다.

@ApiStatus.OverrideOnly 어노테이션은 해당 메서드가 클라이언트 코드에 의해 구현되거나 재정의되어야 하고 직접 호출되지 않아야 함을 나타냅니다. 이 패턴은 일반적으로 확장 메커니즘에서 나타나며, 이 메커니즘에서는 구현이 특정 인터페이스를 준수해야 하지만 이를 호출하는 것은 사용자가 해야 할 일이 아닙니다. 이러한 확장 메커니즘의 한 예는 서비스 공급자 인터페이스입니다. 이 어노테이션으로 클래스 또는 인터페이스를 표시하는 것은 해당 어노테이션으로 모든 메서드를 표시하는 것과 같습니다.

@ApiStatus.OverrideOnly 어노테이션은 메서드가 서비스 제공자 인터페이스(SPI)의 일부임을 나타냅니다. 선언하는 라이브러리의 클라이언트는 그러한 메서드를 직접 호출하는 것이 아니라 구현하거나 재정의해야 합니다. 이 어노테이션으로 클래스 또는 인터페이스를 표시하는 것은 해당 어노테이션으로 모든 메서드를 표시하는 것과 같습니다.

예:


  // 업스트림 라이브러리 코드 내
  @ApiStatus.OverrideOnly
  public class MyService {
    public void perform();
  }

  // 다운스트림 클라이언트 코드 내
  public class Foo {
    public void bar(myService: MyService) {
      myService.perform();
    }
  }
이 검사는 또한 어노테이션을 잘못 적용하여 발생하는 다음과 같은 문제를 탐지합니다.