我不认为它有什么特别的意义。这是一个与JEP 161相关的系统注释,它添加了附加的“配置文件”,以便您可以在 JRE 的子集上运行应用程序。它以编程方式添加,因此不需要遵守语法规则。
在 OpenJDK 错误跟踪器中搜索此 JEP会发现添加了“合成”注释的提交。
看起来好像已经为 a 建立了先例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);