В библиотеке spring-core в файле NonNull.java (язык spring core) есть следующее:
import javax.annotation.Nonnull;
import javax.annotation.meta.TypeQualifierNickname;
Но когда я использую загрузочное приложение Spring, я не вижу никакой библиотеки в моем толстом JAR-файле, который определяет такие аннотации. И я не думаю, что они являются частью Java 17. Тем не менее мое приложение, использующее аннотацию @NonNull, работает. Как это возможно? Я что-то пропустил? ОТРЕДАКТИРОВАНО: Мне кажется, что можно создать аннотацию A в пакете A, ссылающуюся на другую аннотацию B в пакете B, и не иметь зависимости времени выполнения от библиотеки, которая определяет B.
Эти аннотации обрабатываются во время компиляции, для них не нужен код во время выполнения. Вы можете проверить их политику хранения.