myline.java编译提示使用或覆盖已弃用API问题咨询
警告产生原因
你代码中继承了java.applet.Applet类,该类以及整个java.applet包从Java 9版本开始被官方标记为废弃API(Deprecated API),且在Java 11及更高版本中被完全从JDK中移除。Applet是早年用于浏览器嵌入Java程序的技术,目前所有主流浏览器均已停止支持Applet,因此Java官方淘汰了该技术栈,编译器检测到你调用了已废弃的API就会触发该警告。
解决方法
- 临时屏蔽警告(仅适用于Java 8及更低版本,Java 9/10可临时使用):
如果你仅需要临时运行测试这段旧代码,可以在类定义上方加废弃API忽略注解:
也可以编译时添加参数查看详细的废弃提示:import java.awt.*; import java.applet.*; @SuppressWarnings("deprecation") public class myline extends Applet { public void paint(Graphics g) { g.drawLine(100,10,250,150); g.drawLine(100,150,150,150); } }javac -Xlint:deprecation myline.java - 永久兼容解决方案:
改用当前Java官方推荐的Swing或JavaFX技术实现绘图功能,以下是等效功能的Swing实现代码:
这段代码在所有Java 8及更高版本中都可以正常编译运行,不会触发废弃警告。import javax.swing.*; import java.awt.*; public class MyLine extends JFrame { public MyLine() { setTitle("绘图示例"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); } @Override public void paint(Graphics g) { super.paint(g); g.drawLine(100,10,250,150); g.drawLine(100,150,150,150); } public static void main(String[] args) { new MyLine().setVisible(true); } }
内容的提问来源于stack exchange,提问作者Anilect Jose
相关产品推荐
相关产品推荐

