@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:
@ApiStatus.OverrideOnly