@ApiStatus.OverrideOnly でマークされている API メソッドの呼び出しを報告します。

The @ApiStatus.OverrideOnly annotation indicates that the annotated method is supposed to be implemented or overridden by client code, but not called by it directly. This pattern commonly appears in extension mechanisms where your implementation must conform to some interface, but it's not your responsibility to call it. One example of such an extension mechanism is the Service Provider Interface. このアノテーションでクラスやインターフェースをマークすることは、このアノテーションですべてのメソッドをマークすることと同じです。

@ApiStatus.OverrideOnly アノテーションは、このメソッドが SPI (サービスプロバイダーインターフェース) の一部であることを示しています。 宣言するライブラリのクライアントは、このようなメソッドを直接呼び出すのではなく、実装またはオーバーライドする必要があります。 このアノテーションでクラスやインターフェースをマークすることは、このアノテーションですべてのメソッドをマークすることと同じです。

例:


  // In upstream library code
  @ApiStatus.OverrideOnly
  public class MyService {
    public void perform();
  }

  // In downstream client code
  public class Foo {
    public void bar(myService: MyService) {
      myService.perform();
    }
  }
This inspection also detects the following problems related to applying the annotation incorrectly: