使用 com.google.common.hash 中的 Hashing 类是否安全?

Vla*_*ier 5 java hash intellij-idea

我偶然发现了包Hashing中的课程com.google.common.hash。如果我使用该类的函数,Intellij IDEA 将显示以下警告:

类本身带有@Beta注释:

注释的描述@Beta说:

表示公共 API(公共类、方法或字段)在未来版本中可能会发生不兼容的更改,甚至被删除。带有此注释的 API 不受其包含库所做的任何兼容性保证的约束。请注意,此注释的存在并不意味着API 的质量或性能......

  • 那么API的实现是否良好且稳定?

...有问题的只是它不是“API 冻结”这一事实。应用程序依赖 beta API 通常是安全的,但需要做一些额外的工作......

  • 什么样的额外工作?

...在升级期间。然而,通常不建议库(包含在用户的 CLASSPATH 中,超出库开发人员的控制)这样做。

问题是使用上述类及其功能是否安全/稳定?使用测试版 API 时需要权衡什么?

vik*_*eve 7

API 的实现很好,您可以依赖它,因为它是来自 google 的广泛使用的库。

至于稳定性 - 您可以在这里做一些研究,并比较该 API 的几个版本(相隔一年)。比方说,23.0 与 27.0-jre

https://google.github.io/guava/releases/23.0/api/docs/com/google/common/hash/Hashing.html

https://google.github.io/guava/releases/27.0-jre/api/docs/com/google/common/hash/Hashing.html

如果进行比较,不同年份(2017 年和 2018 年)的 API 是完全相同的。

因此,我将此处解释为“请注意,该 API 将来可能会@Beta发生变化”的提示,但实际上该 API 既稳定、可靠又被大量使用。

也许在某个时候,谷歌开发人员可能会选择删除@Beta注释。或者也许他们打算这样做,或者已经忘记了(推测......)

所指的“额外工作”意味着,如果您使用此 API 构建应用程序,并且需要升级到该 API 的最新版本。

那里的工作程度取决于您使用 API 的程度和频率,以及对该 API 的依赖性有多深(例如,通过其他库 - 这些库也需要重建)。

总而言之,在这种情况下 - “别担心,继续前进”:)