我在我的 API 中有一个带有通用可变参数的方法。我希望我的 API 兼容 Java 6 的源代码和二进制代码,但如果 Java 7 的 API 消费者不再遭受不必要的 "varargs" 警告会很好。
我想到的一个技巧是将自己的 java.lang.SafeVarargs 注释添加到我的 API 中,并随着我的可交付成果一起发布。这样做的效果如下:
- Java 6 编译器不会识别此注释,只会忽略它。 - Java 7 编译器将识别此注释,并可能 (?) 首先从 JDK 中加载这个注释,因此它们将不再产生令人讨厌的警告。
除了许可证的问题之外,这是否有保证能够正常工作呢?它似乎可以在 javac 中工作。或者是否存在重新定义来自 JDK 的注释在调用现场具有不良副作用的配置? 或者还有其他解决 Java 6/7 互操作性问题的方法吗?
一个相关的问题:
- 在 Java 6 中使用 Java 7 SDK 特性
我想到的一个技巧是将自己的 java.lang.SafeVarargs 注释添加到我的 API 中,并随着我的可交付成果一起发布。这样做的效果如下:
- Java 6 编译器不会识别此注释,只会忽略它。 - Java 7 编译器将识别此注释,并可能 (?) 首先从 JDK 中加载这个注释,因此它们将不再产生令人讨厌的警告。
除了许可证的问题之外,这是否有保证能够正常工作呢?它似乎可以在 javac 中工作。或者是否存在重新定义来自 JDK 的注释在调用现场具有不良副作用的配置? 或者还有其他解决 Java 6/7 互操作性问题的方法吗?
一个相关的问题:
- 在 Java 6 中使用 Java 7 SDK 特性
@SafeVarargs
注释,但这在Java 6中不可用。 - Lukas Eder