Reports calls to API methods marked with @ApiStatus.OverrideOnly.

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. Marking a class or interface with this annotation is the same as marking every method with it.

The @ApiStatus.OverrideOnly annotation indicates that the method is part of SPI (Service Provider Interface). Clients of the declaring library should implement or override such methods, not call them directly. Marking a class or interface with this annotation is the same as marking every method with it.

Example:


  // 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: