122

在 Java 中,如果您导入一个已弃用的类:

import SomeDeprecatedClass;

您会收到以下警告:The type SomeDeprecatedClass is deprecated

有没有办法抑制这个警告?

4

7 回答 7

207

避免警告:不要导入

而是使用完全限定的类名

并在尽可能少的地方使用它。

于 2014-01-03T17:20:02.477 回答
140

在您的类或方法上使用此注释:

@SuppressWarnings( "deprecation" )
于 2009-12-07T05:45:45.283 回答
14

作为 hack,您不能进行导入并在代码中使用完全限定名称。

您也可以尝试 javac -Xlint:-deprecation 不确定是否可以解决它。

于 2009-12-07T05:42:11.753 回答
11

我通过将导入更改为:

import package.*

然后注释使用不推荐使用的类的方法@SuppressWarnings("deprecation")

于 2012-03-29T10:45:31.687 回答
9

假设您正在使用已弃用的方法(例如getUnicodeStream(String columnLabel)in java.sql.ResultSet)覆盖/实现接口,那么您将无法仅通过使用 annotation 来消除弃用警告@SuppressWarnings( "deprecation" ),除非您还使用 annotation 注释相同的新方法@Deprecated。这是合乎逻辑的,因为否则您可以通过覆盖其接口描述来取消弃用方法。

于 2011-10-20T13:43:55.270 回答
2

您可以使用:

javac FileName.java -Xlint:-deprecation

但这会给您警告,并告诉您导致弃用或使用弃用 API 的代码部分。现在,您可以运行带有这些警告的代码,也可以对代码进行适当的更改。

就我而言,我正在使用someListItem.addItem("red color"),而编译器希望我使用someListItem.add("red color");.

于 2014-03-08T13:39:19.330 回答
0

如果@SuppressWarnings("deprecation")不适合你,就像我一样。您可以在 sonar lint 插件中找到确切的 squid 编号。然后你可以简单地抑制警告:@SuppressWarnings("squid:CallToDeprecatedMethod")

在此处输入图像描述

于 2021-04-19T13:17:01.877 回答