@ApiStatus.NonExtendable로 표시된 API 요소를 확장, 구현 또는 재정의하는 클래스, 인터페이스 및 메서드를 보고합니다.

@ApiStatus.NonExtendable 어노테이션은 클래스, 인터페이스 또는 메서드가 확장되거나, 구현되거나, 재정의되어서는 안 된다는 것을 나타냅니다. 그러한 인터페이스 및 클래스를 내부 라이브러리 구현으로 형 변환하는 것은 꽤 흔한 일이므로 클라이언트에서 다른 구현을 제공한다면 ClassCastException이 발생합니다. 그러한 클래스 및 인터페이스에 새 추상 메서드를 추가하면 클라이언트 구현에 대한 호환성을 잃습니다.

예:


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

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