Reports classes, interfaces, and methods that extend, implement, or override API elements marked with @ApiStatus.NonExtendable.

The @ApiStatus.NonExtendable annotation indicates that the class, interface, or method must not be extended, implemented, or overridden. Since casting such interfaces and classes to the internal library implementation is rather common, if a client provides a different implementation, you will get ClassCastException. Adding new abstract methods to such classes and interfaces will break the compatibility with the client's implementations.

Example:


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

  // In downstream client code
  public class MyServiceImpl implements MyService {
    @Override
    public void perform() {
      // ...
    }
  }
This inspection also detects the following problems related to applying the annotation incorrectly: