在Java中抑制不推荐使用的导入警告

Ed *_*zur 95 java import deprecated suppress-warnings

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

import SomeDeprecatedClass;
Run Code Online (Sandbox Code Playgroud)

你得到这个警告: The type SomeDeprecatedClass is deprecated

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

Kas*_*erg 148

为了避免该警告:千万不能导入类

而是使用完全限定的类名

并在尽可能少的位置使用它.

  • +1这应该是接受的答案.它的好处是不会抑制整个类的弃用. (11认同)
  • 这是更好的答案,"@ SuppressWarnings"在班级别不包括进口 (9认同)
  • 这是Java 9之前的最佳答案,它最终得到修复:https://bugs.openjdk.java.net/browse/JDK-8032211 (3认同)
  • 它有效,但不实用。 (2认同)

cra*_*ter 124

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

@SuppressWarnings( "deprecation" )
Run Code Online (Sandbox Code Playgroud)

  • 这适用于进口吗?我已经在方法等上使用了这个注释,但它似乎没有用进口来识别. (23认同)
  • 它似乎不适用于命令行"javac"或ant的<javac>任务.-Xlint:-deprecation标志也没有.看起来像一个javac bug. (17认同)
  • 答案不应该在顶部,因为问题是关于"import"语句,并且修复只适用于Eclipse/Intellij(根据评论看起来如此),但真正的最终来源是javac,修复不起作用.这个答案真的回答了这个问题:/sf/answers/1463644311/ (7认同)
  • 在类级别使用注释也应涵盖导入.它至少在Eclipse(以及Rational Application Developer)中为我做到这一点,但我在命令行编译期间不确定. (2认同)
  • javac/JLS错误,已在JDK 9中修复:https://bugs.openjdk.java.net/browse/JDK-8032211 (2认同)

Tof*_*eer 14

作为hack,您无法执行导入并在代码中使用完全限定名称.

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


Tim*_*Tim 9

我通过将导入更改为:

import package.*
Run Code Online (Sandbox Code Playgroud)

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


小智 6

假设您使用不推荐使用的方法(例如java.sql.ResultSet中的getUnicodeStream(String columnLabel))覆盖/实现接口,那么仅使用注释@SuppressWarnings("deprecation")就不会删除弃用警告,除非您还使用@Deprecated注释注释相同的新方法.这是合乎逻辑的,因为否则您可以通过覆盖其接口描述来"取消激活"方法.