Я не думаю, что это имеет какое-то особое значение. Это системная аннотация, связанная с JEP 161 , в которой добавлены аддитивные «профили», так что вы можете запускать приложение в подмножестве JRE. Он добавляется программно, поэтому не нужно придерживаться правил грамматики.
Поиск в трекере ошибок OpenJDK для этого JEP обнаружил коммит, в который добавлена "синтетическая" аннотация .
Похоже, что прецедент уже был создан для sun.Proprietary+Annotation
, и они просто следовали соглашению.
Я подозреваю, что причина, по которой аннотация Sun была названа таким образом, была потеряна для летописи времени - она предшествует Java 6, до того, как код стал открытым исходным кодом.
Я также нашел коммит в jdeps , где они анализируют эти аннотации, где они не придают никакого значения способу, которым они названы; они просто используют полное имя для обоих.
Вы также можете начать использовать недопустимые идентификаторы типов - в Oracle не требуется карьера!
final DynamicType.Unloaded<? extends Annotation> unloaded = new ByteBuddy()
.with(TypeValidation.DISABLED)
.makeAnnotation()
.name("jdk.Profile+Annotation")
.make();
final DynamicType.Loaded<? extends Annotation> loaded = unloaded.load(Test.class.getClassLoader());
final Class<? extends Annotation> myBadlyNamedAnnotation = loaded.getLoaded();
System.out.println(myBadlyNamedAnnotation);