为什么在IntelliJ 2018.2中Guava的EventBus标记不稳定?

20k*_*ots 19 java intellij-idea

IntelliJ 2018.2中添加了一项新的检查,该检查应该从不稳定的API发出警告:https://youtrack.jetbrains.com/issue/IDEA-159541 .

这个警告出现在Guava的EventBus上.为什么这是一个不稳定的API?

JB *_*zet 38

因为EventBus被注释为@Beta.

您必须向Guava项目维护人员询问为什么16个版本的Guava存在的类仍然是Beta,但它仍然是.

  • `一个为16个版本的番石榴存在的类仍然是Beta`Wowzers.我在这里是因为Guava的`Hashing`类也被标记为`@ Beta`.我想知道是否是同样的情况.无论如何,到目前为止还没有遇到任何麻烦. (6认同)
  • 22 个版本和计数!;) (2认同)
  • @Decoded 您应该避免在生产中使用“@Beta”内容。如果 Guava 的一半是“@Beta”,那么 Guava 的用处只有您期望的一半。因此,通过在多个版本的“@Beta”中保留大量内容,您实际上可以说“这是一个玩具项目”,而不是“这是生产就绪且强大的”。自由是有代价的。 (2认同)
  • 我绝对同意这是有代价的。不建议生产中或生产外的使用规则。不过,我在 LinkedIn 工作。我们有五十万QPS的服务,使用guava流处理等,而且很稳定。如果它适用于您的用例,请在了解风险的情况下使用它。每当我们升级番石榴版本时,我们都会冒引入一些错误的风险,如果发生这种情况,我们会回滚并修复。 (2认同)

Fra*_*kie 8

除了@JB Nizet的答案之外,它还完美地解释了IntelliJ为什么标记此错误,您可能还想在全局范围内对此错误进行抑制,但仅限于Google Beta注释

只需Settings -> Inspections -> JVM languages按照下面的图片进入,然后删除com.google.common.anotations.Beta

如何禁用IntelliJ的Google Beta批注


Bul*_*aza 5

您还可以要求 IntelliJ 取消@Beta注释类定义的警告,如下所示:

@SuppressWarnings("UnstableApiUsage")
static RateLimiter API_RATE_LIMITER = RateLimiter.create(8);
Run Code Online (Sandbox Code Playgroud)

当您无论如何都可以使用该类时(并且不会遇到问题),这可以正确处理特定情况下的警告。