9

我在 slf4j 中看到了一些代码,如下所示。我不知道为什么要避免在这里不断折叠。有必要这样做吗?或者只是最佳实践。这样做有什么好处?

谢谢。

/**
  * Declare the version of the SLF4J API this implementation is compiled against. 
  * The value of this field is usually modified with each release. 
  */
// to avoid constant folding by the compiler, this field must *not* be final
public static String REQUESTED_API_VERSION = "1.6";  // !final**
4

1 回答 1

6

在发布库的特定情况下,您通常无法控制最终链接到的日志库的最终版本。例如,您使用的是 1.6 版本,而使用您的库的应用程序可能使用 1.6.1 来获得错误修复。由于它只是一个点发布,API 应该是兼容的,但是如果您的库检查 SLF4J 版本,它应该显示 1.6.1 而不是 1.6。

如果常量是内联的,即使库在事后升级,您也会看到 1.6(因为它已复制到您的类文件中)。

于 2011-01-15T18:03:11.677 回答