Java 使用com.google.common.hash中的哈希类安全吗?

Java 使用com.google.common.hash中的哈希类安全吗?,java,intellij-idea,hash,Java,Intellij Idea,Hash,我偶然发现了com.google.common.hash包中的Hashing类。 Intellij IDEA在使用该类函数时显示以下警告: 类本身使用@Beta注释进行注释: @Beta注释说明如下: 表示公共API(公共类、方法或字段)在将来的版本中可能会发生不兼容的更改,甚至删除。带有此注释的API不受其包含库的任何兼容性保证的约束。请注意,此注释的存在并不意味着API的质量或性能 那么API的实现是否良好且稳定 。。。有疑问的是,这只是一个事实,即它不是“API冻结” 应用程序依赖

我偶然发现了
com.google.common.hash
包中的
Hashing
类。 Intellij IDEA在使用该类函数时显示以下警告:

类本身使用
@Beta
注释进行注释:

@Beta
注释说明如下:

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

  • 那么API的实现是否良好且稳定
。。。有疑问的是,这只是一个事实,即它不是“API冻结” 应用程序依赖beta API通常是安全的,但要付出一些额外工作的代价

  • 哪种额外的工作
。。。在升级期间。但是,对于库(包含在用户的类路径中,不受库开发人员的控制)来说,这样做通常是不可取的


问题是使用上述类及其功能是否安全/稳定?使用beta API时有什么折衷办法?

因此API的实现是良好和稳定的?
无法从该注释中得知。
要回答这个问题,你需要知道它的使用范围有多广,使用多长时间

哪种额外工作?
当一个只需要1个参数并返回
String
的方法现在需要3个参数并返回
列表时,您必须做的额外工作
i、 e:使用此API的代码可能需要因API更改而更改

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

引用的文本表示API“可能会发生不兼容的更改”。这意味着它(API)不稳定

还要注意的是,引用的文本明确表示注释并没有说明API的实现是否有效

但也要注意,这不是一个是/否问题。这实际上是一个肯定/否定/可能的问题。有些问题没有答案

哪种额外的工作

正在重写一些代码。。。如果API发生变化

问题是使用上述类及其功能是否安全/稳定

这需要预测未来的能力。这是无法回答的。(除非你问那些在API上添加注释的人。他们可能能够做出可靠的预测…)

这也是无法回答的,因为这取决于您所说的安全是什么意思,以及您打算在中使用
哈希
类的上下文

使用beta API时的权衡是什么

权衡是不言而喻的:

  • 另一方面,您可以使用新的API功能,从长远来看,这些功能可能对您的应用程序有益。(如果没有证据表明这可能是有益的,那么整个讨论都没有意义!)

  • 另一方面,如果作者修改API,您可能需要重写一些代码。。。就像他们说的那样


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

至于稳定性,您可以在这里做一些研究,并在一年内比较两个版本的API。比如说,23.0对27.0-jre

如果你做一个区分,不同年份(2017年和2018年)的API完全相同

因此,我将这里的
@Beta
解释为“注意,此API在未来可能会发生变化”,但实际上,该API既稳定、可靠,又大量使用

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

提到的“额外工作”意味着,如果您使用此API构建应用程序,如果您需要升级到此API的最新版本,您可能需要稍微重构您的应用程序(假设某个方法符号发生更改,或者某个方法被弃用并替换)

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


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

谢谢你的回答。你提出了一些好的观点。我知道安全的定义不清楚。我想使用它从给定的
字符串
生成
SHA256
哈希值(作为
整数