为旧的 Java 编译器提供虚拟注释

Providing Dummy-Annotation for older Java compilers

我正在开发一个 Java 库,我希望它能够在几个不同的 Java 编译器版本中使用。某些注释(特别是 @SafeVarargs)仅存在于其中一些编译器版本中,而在其他编译器版本中会产生错误。

特别是像 @SafeVarargs 这样的东西,它主要用作抑制警告的标记而不是实际更改编译器的输出,我希望能够使用这些注释并简单地提供一个虚拟 -如果早期的编译器缺少它们,则实现。

我该怎么做?

我猜你可以创建这些注释的代理实现并将它们放在一个 Jar 中,该 Jar 添加到 classpath 确保 system/compiler 提供的一个在由对应class loader.

例如,您可以从 here

复制 SafeVarargs 的代码