Java @SuppressWarnings的用途是什么

Java @SuppressWarnings的用途是什么,java,annotations,suppress-warnings,Java,Annotations,Suppress Warnings,我不理解Java的这个特性。我知道它使编码更容易,有时看起来更整洁,但它的实际用途是什么?相反,我觉得最好显示警告,因为将来任何人都可以在修改代码之前引用它们。这是@SuppressWarnings提高了编译效率还是符合任何编码标准 实际用途是抑制警告。就这样。没有更少,没有更多。我认为这不会影响任何编译效率,但绝对不会影响运行时效率。当您处理不支持泛型的遗留代码时(Java在编程时,您应该注意编译器警告,在最好的情况下,编译代码时不要出现警告(当然还有错误) 但有时你无法摆脱警告,你知道代码是

我不理解Java的这个特性。我知道它使编码更容易,有时看起来更整洁,但它的实际用途是什么?相反,我觉得最好显示警告,因为将来任何人都可以在修改代码之前引用它们。这是@SuppressWarnings提高了编译效率还是符合任何编码标准

实际用途是抑制警告。就这样。没有更少,没有更多。我认为这不会影响任何编译效率,但绝对不会影响运行时效率。

当您处理不支持泛型的遗留代码时(Java在编程时,您应该注意编译器警告,在最好的情况下,编译代码时不要出现警告(当然还有错误)

但有时你无法摆脱警告,你知道代码是正确的或无法更改,那么你就不想每次都被编译器的错误所困扰


因此,您可以使用您提到的命令抑制它。

在编译期间使用
SuppressWarnings
(因此,只有编译器知道在看到
SuppressWarnings
注释时要做什么)

各国:

要由编译器在中抑制的警告集 注释元素。允许重复名称。第二个和 名称的连续出现将被忽略 无法识别的警告名称不是错误:编译器必须忽略任何警告名称 它们无法识别的警告名称。但是,它们可以自由发出警告 如果批注包含无法识别的警告名称,则发出警告


使用
@SuppressWarnings
有几个原因,但最有用的情况之一是:

  • 拥有一个包含数千个警告的现有项目。您希望您的团队立即处理警告,但您没有时间修复所有警告

    注释使您有机会抑制某些无法快速修复的警告,并获得“干净”的基础

    这个干净的代码库是必不可少的,因为当代码库有数千个警告时,没有人会害怕签入带有警告的代码,但是当代码库没有警告并且团队中的其他人立即看到有人签入带有2个左右警告的代码时,他们会害怕

  • 您正在使用第三方lib,因此,您会对无法修复的警告感到恼火,除非更改lib的代码,而这在大多数情况下是不希望的

在我看来,第一个原因是
@SuppressWarnings

的最佳用例之一。其他答案已经对
@SuppressWarnings
的用例进行了大量解释,但我想强调一点,有时您绝对需要使用
@SuppressWarnings
来克服语言本身的局限性
,在这些情况下使用
@SuppressWarnings
是绝对合法的

在其他情况下,
@SuppressWarnings
的使用可能被认为是有问题的,因为在这些情况下,您总是可以通过更改代码来消除警告(当然,这并不总是可以接受的)

以下是一些常见情况,如果没有
@SuppressWarnings
,您绝对无法清除警告:

  • 实现基于阵列的泛型集合(因为无法创建泛型阵列)
  • 将类映射到它们的实现(因为不能将泛型类型参数的不同值分配给不同的映射实体)

SuppressWarnings
不仅用于泛型支持或强制转换警告。我只是说这是删除强制转换警告的唯一方法,因为在代码的较旧部分中缺少泛型,而在某个时候您想介绍它们。我没有说这是此注释的唯一用途。。。