[google/guava]从 HashFunction/Hashing/HashCode 中删除 @Beta

2024-04-24 530 views
1

这些类已经存在很长时间了(自 11.0 起),因此我想请求对它们进行 de-beta 化。它们是很棒的容器/抽象,因此我们希望使用它们而不用担心即将损坏。

回答

9

我签了!

2

@flamespt 看起来它仍然标记为测试版。对发生的事情有什么想法吗?

3

事实上,在 com.google.common.hash 包中,以下类也被标记为@Beta,但一直在@since 11 左右:

Funnels.java HashFunction.java HashCode.java Hasher.java Funnel.java Hashing.java

也许 @Beta 应该从所有这些中删除?

9

似乎很难删除@Beta?刚刚升级到 29-jre,哈希仍然是 @Beta?!

4

有关于此的任何更新吗?这似乎是一个微不足道的代码更改。

1

我们正在审查所有@BetaAPI,目的是删除@Beta所有没有严重的未解决 API 问题的 API。

6

看来您最近从多个类以及(来自内部更改?)中删除了 @Beta,但没有从 com.google.common.hash 包中的其他类中删除HashFunction@Beta ,尤其是BloomFilterFunnel,它们自版本 11 以来一直是 Guava 的一部分。

您能分享一下您关于“取消投注”这两个类别的计划吗?它们对用户来说“风险”有多大? (出于好奇:BloomFilter内部使用有多广泛?)或者您可能计划从BloomFilter#2226中提到的提取一个接口? ;)

8

为什么不从哈希中删除@Beta?其他的已经被删除了。哈希有问题吗?

1

澄清一点:@Beta并不(也从来没有)意味着 API 是“有问题的”。

Beta API 代表了我们不准备冻结的 Guava 功能,无论出于何种原因:因为这些方法可能找不到足够的用户,因为它们可能会被移动,因为它们的用途可能太窄而无法将它们包含在 Guava 中。

也就是说,@Beta API 经过了充分的测试和支持,并得到了 Guava 其余部分所受到的所有关心和喜爱。

@Beta注解最大的内涵是被注解的类或方法可能会发生变化。它们可以随时以任何方式修改,甚至删除。如果你的代码本身就是一个库(即它在你自己控制范围之外的用户的 CLASSPATH 上使用),那么你不应该使用 beta API,除非你重新打包它们(例如使用 ProGuard)。

@Beta标签是否给Hashing您带来了问题?如果是这样,请详细说明。

5

是的,我们收到了来自某些扫描仪工具和/或 Intellij 的警告。这是一个令人不安的想法,您提供了一个 API/事件框架,我们已经依赖它很多年了 (!!) 现在我们的构建仍然警告我们依赖测试版功能!我可以理解,这样的注释是在引入新功能时进行的,但是经过数年和第 10 个版本之后,您预计测试版会成熟为稳定的长期功能。

5

@kluever 你有没有讨论@Beta过从BloomFilter和中删除Funnel(s)?我应该创建一个单独的问题吗?

5

我们没有看那些。一个单独的问题会很好,谢谢。

2

@kluever我创建了#5863。