代码编译期间遇到警告消息"使用或覆盖已弃用的API"

Law*_*nce 18 java multithreading

我编译了我的程序,我得到以下错误.我该如何解决?

Note: ClientThreadClients.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 18

你应该做的是做警告信息所说的.使用该-Xlint:deprecation选项重新编译该类.

然后,编译器将告诉您正在使用或覆盖的已弃用的API.

(或者,如果你向我们展示了这个类的源代码,我们可能会为你发现问题......或者自己编译它.)


但我你正在使用Thread该类中不赞成使用的方法之一:

  • countStackFrames()
  • destroy()
  • pause()
  • resume()
  • stop()
  • stop(Throwable)
  • suspend()

这些方法要么不可靠,要么不安全或两者兼而有之.强烈建议您不要使用它们.阅读此解释:"为什么Thread.stop,Thread.suspend和Thread.resume已弃用? ".


一旦确定了导致问​​题的API,就有两种方法可以"解决"错误.

  1. 你可以阅读的javadoc已过时的API,找出为什么它已经过时了.然后根据javadocs所说的内容和上下文,你找到了一种方法来用更好的东西替换代码对不推荐使用的元素的使用.

  2. 您可以使用@SuppressWarnings("deprecation")注释告诉编译器"保持安静".这通常是一个坏主意:

    • 在将来的版本中可能会删除已弃用的API .
    • 不推荐使用的API 可能存在基本缺陷,使您的应用程序在某些情况下不可靠.