@ApiStatus.OverrideOnly로 표시된 API 메서드 호출을 보고합니다.
@ApiStatus.OverrideOnly 어노테이션은 해당 메서드가 클라이언트 코드에 의해 구현되거나 재정의되어야 하고 직접 호출되지 않아야 함을 나타냅니다.
이 패턴은 일반적으로 확장 메커니즘에서 나타나며, 이 메커니즘에서는 구현이 특정 인터페이스를 준수해야 하지만 이를 호출하는 것은 사용자가 해야 할 일이 아닙니다.
이러한 확장 메커니즘의 한 예는 서비스 공급자 인터페이스입니다.
이 어노테이션으로 클래스 또는 인터페이스를 표시하는 것은 해당 어노테이션으로 모든 메서드를 표시하는 것과 같습니다.
@ApiStatus.OverrideOnly 어노테이션은 메서드가 서비스 제공자 인터페이스(SPI)의 일부임을 나타냅니다.
선언하는 라이브러리의 클라이언트는 그러한 메서드를 직접 호출하는 것이 아니라 구현하거나 재정의해야 합니다.
이 어노테이션으로 클래스 또는 인터페이스를 표시하는 것은 해당 어노테이션으로 모든 메서드를 표시하는 것과 같습니다.
예:
// 업스트림 라이브러리 코드 내
@ApiStatus.OverrideOnly
public class MyService {
public void perform();
}
// 다운스트림 클라이언트 코드 내
public class Foo {
public void bar(myService: MyService) {
myService.perform();
}
}
이 검사는 또한 어노테이션을 잘못 적용하여 발생하는 다음과 같은 문제를 탐지합니다.
@ApiStatus.OverrideOnly 어노테이션이 이미 달린 클래스의 메서드에 불필요하게 어노테이션을 추가