当前位置: 首页 > article >正文

Java 21的Enhanced Deprecation的笔记

  • Java Core Libraries

  • Enhanced Deprecation
    废弃API,一般可以理解为不推荐开发者在项目中使用的API,当前为了保持兼容,在JDK中保留,未来可能会删除。
    作为开发者,使用工具jdeprscan可以方便的查找现有代码中存在的一些废弃API的信息。

  • Deprecation in the JDK
    废弃API出现的部分原因:

    • 一些比较危险的API,比如Thread.stop
    • 变更API的设计,提供新的API,导致已有的API被废弃。
    • 新的API,提供更好的使用体验,导致已有的API被废弃。
    • 即将被移除的API。

    当前被废弃的API,可参考清单。

  • How to Deprecate APIs
    在类或者方法上增加注解@Deprecated,比如:

    • 标记版本号

      @Deprecated(since="<version>")
      

      <version>为版本号的说明,比如1.2,表示从1.2版本开始,相关API废弃,不再推荐开发者使用。

    • 标记未来的删除可能性

      @Deprecated(forRemoval=<boolean>)
      

      forRemovalboolean类型,取值包括truefalse。取值为true,提示开发者相关API后续可能会被删除。

    • 混合使用

      @Deprecated(since="9", forRemoval=true)
      

    在API的文档中增加标记@deprecated,提供更丰富的说明。
    在现代的IDE中,@Deprecated@deprecated需要成对使用。

  • Notifications and Warnings

    编译Java代码时,增加选项-Xlint:deprecation-Xlint:removal,可以获得废弃API的相应提示信息。
    编译命令的样例,如下:

    javac -Xlint:deprecation -Xlint:removal src/example/DeprecationExample.java
    

    出于兼容的原因,消除废弃API的使用,需要一个过程,因此为了避免恼人的警告影响心情,对于一些确认无伤大雅的废弃API,可以在项目代码中增加注解,即使用如下方式屏蔽相应的编译警告。

    • 使用@SuppressWarnings("deprecation"),屏蔽废弃API的编译警告。
    • 使用@SuppressWarnings("removal"),屏蔽废弃API可能被移除的编译警告。
    • 使用@SuppressWarnings({"deprecation","removal"}),同时屏蔽废弃API和可能被移除的编译警告。
  • Running jdeprscan
    jdeprscan的使用方法,可参考文档。


http://www.kler.cn/news/309826.html

相关文章:

  • 【小鹏汽车用户平台-注册安全分析报告-无验证方式导致安全隐患】
  • mac电脑命令行获取电量
  • PHP仓库物资出入库管理系统小程序源码
  • OTA升级
  • Python urllib
  • 智能化大数据平台引领企业迈向精准决策时代
  • java中的集合之List
  • 828华为云征文|华为Flexus云服务器搭建OnlyOffice私有化在线办公套件
  • 镀金引线---
  • SQL数据库(MySQL)
  • 软件测试笔试面试汇总(二)(附答案)
  • 通信工程学习:什么是EPON以太网无源光网络
  • 大模型持续影响劳动力市场,普通人如何抢占风口?
  • Redis网络模型、通信协议、内存回收
  • 2023 hnust 湖科大 毕业实习 报告+实习鉴定表
  • Leetcode—合并两个有序数组
  • 二叉搜索树(Java实现)
  • fastjson2 解决long类型带L尾缀的value
  • 【web前端】数组array、集合set、字典map、对象object、字符串string常见方法合集
  • 文件操作
  • OrionX GPU算力池助力AI OCR场景应用
  • git 更换远程地址的方法
  • [产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发
  • 传感技术是如何实现实时监测和控制的呢
  • Flume:大规模日志收集与数据传输的利器
  • JAVA_15
  • 兰花种类识别系统源码分享
  • 【渗透测试】——Upload靶场实战(1-5关)
  • 怎么使用nginx把80端口代理到想要的端口?
  • 中、美、德、日制造业理念差异