应用JDK 9 @不推荐使用的增强功能

我在博客文章JDK 9 @Deprecated Annotation Enhancements中讨论了针对@Deprecated注释的当前建议的JDK 9增强 功能 。 在本文中,我将更详细地介绍这些次要增强功能的建议用法,并说明关键的Java SE API如何已经应用了这些@Deprecated增强功能。

JEP 277主页面(“ Enhanced Deprecation”)的当前版本指出:“增强@Deprecated注解的主要目的是向工具提供有关API弃用状态的更详细的信息。” 该页面还描述了添加到@Deprecated批注[ forRemoval()since() ]的两个新方法:

  • “用于forRemoval()的方法返回boolean 。 如果为true ,则表示此API元素已指定在将来的版本中删除。 如果为false ,则不推荐使用API​​元素,但是目前不打算在将来的版本中将其删除。 此元素的默认值为false 。 … forRemoval() boolean元素,如果为true ,则表示有意在将来的项目版本中删除该API元素。 因此,会提前向API用户发出警告,如果他们不从API迁移过来,则他们的代码在升级到较新版本时可能会被破坏。 如果forRemoval()false ,则表明建议从已弃用的API迁移,但没有删除该API的任何具体意图。”
  • “一个名为since()方法,它返回String 。 该字符串应包含不赞成使用此API的发行版或版本号。 它具有自由格式的语法,但是发行版编号应遵循与@since Javadoc标记相同的方案,以用于包含已弃用API的项目。 …此元素的默认值为空字符串。”

本文清楚地表明,其意图是能够明确声明是否可能(计划中)删除不推荐使用的元素,或者是否没有计划删除不推荐使用的元素。 对于该不赞成使用的元素的客户来说,这可能是重要的信息,他们需要以何种紧急程度将不赞成使用的元素的使用更改为其他元素。

Java SE API上新的JDK 9 @Deprecated方法的应用还可以指导如何使用它们。 关于这一点, JEP 277页面当前指出(我的重点是增加),“几个Java SE API将添加,更新或删除@Deprecated注释。 下面列出了一些建议的更改。 除非另有说明,否则此处列出的弃用项不适用 。 请注意,这不是Java SE 9中不推荐使用的全面列表。还请注意,其中一些项目将不会在Java SE 9中实现 。” 考虑到这一概述,我现在将注意力转向当前JDK 9 API文档中的示例,以说明这些概念。

JEP 277的网页当前列出“向Optional.get方法添加@Deprecated( JDK-8160606 )”作为适用于“建议的更改”的Java SE API之一。 由于不推荐使用Optional.get()当前与一个错误( JDK-8160606 )相关联,因此即使当前的Javadoc文档尚未显示已应用,但JDK 9仍未排除它。 接下来的两个屏幕快照展示了Java SE 9中尚未弃用Optional.get()的情况。

Java SE 8:引入了Optional.get()

JavaSE8OptionalGetNotDeprecated

Java SE 9:尚未弃用Optional.get()

JDK9OptionalGetNotYet已弃用

已弃用,无拆除计划

JEP 277在Java SE API列表中弃用了“盒装原语”的构造函数,并在@Deprecation处理中提出了“建议的更改”。 接下来的两个屏幕快照演示了JDK 9版本的Boolean确实将新的@Deprecated注释应用于其构造函数。

Java SE 8:不建议使用Boolean构造函数

JavaSE8NotDeprecatedBooleanConstructors

Java SE 9: since=9不推荐使用Boolean构造函数

JDK9DeprecatedBooleanConstructors

值得注意的是,新应用的@Deprecated批注包含一个新方法( since="9" ),而不包括另一个(不forRemoval() 。在这种情况下,除非另有说明,否则Boolean的用户应假定,从Java SE 9开始不推荐使用Boolean构造函数,但是目前尚无删除这些不推荐使用的构造函数的计划。

就JDK 9 @Deprecated注释而言,Applet类的处理与“盒装原始”构造函数类似。 像盒装基元类的构造函数一样,在JDK 9中新弃用了与小应用程序相关的类,在注释中添加了since="9" ,以使其清楚地表明它们已使用Java SE 9进行了注释,而没有指定了forRemoval() (意味着假定为false )。 小程序弃用由JEP 289 (“弃用小程序API”)涵盖,该程序的确声明“将@Deprecated(since="9")批注添加到选定的小程序相关类。

自JDK 9起@Deprecated Applet类,但没有forRemoval()

不推荐使用JavaSE9Applet

弃用并计划移除

JDK 9中已弃用并标记为删除的示例之一是System.runFinalizersOnExit(boolean) 。 以下屏幕快照表明,此方法在Java SE 8中已被弃用,但是在Java SE 9中已弃用该方法,也表明有意删除此方法。 我还喜欢它传达的信息,表明该方法在Java 1.2中已被弃用。

Java SE 8:不推荐使用的方法,删除计划或版本最初不建议使用

JavaSE8不推荐使用的SystemRunFinalizersOnExit

Java SE 9:不推荐使用的方法通信原始不推荐使用的版本和删除意图

JDK9不建议使用RemoveTrueSystemRunFinalizersOnExit

结论

JEP 277是有关@Deprecated的当前缺陷以及JDK 9的较小增强如何减轻这些缺陷的至少一部分的高度可读的论文。 尽管从许多方面来说,JDK 9更改为@Deprecated可能被称为“婴儿步骤”,但与JDK 9之前的版本@Deprecated ,它们确实提供了一些标准化的功能来传达特定的弃用历史和未来计划。所谓的“ Java SE中的用法”本身很有趣,因为它描述了几个Java SE API(本文中仅强调了其中的一个子集),这些API被提议更改其弃用状态或具有有关弃用历史的其他详细信息和/或将来的计划添加到其中。

翻译自: https://www.javacodegeeks.com/2016/08/applying-jdk-9-deprecated-enhancements.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7下安装pip——Python的包管理工具

很多Python的工具包的安装,用一个pip install ** 就可以了,看得我这个晕啊。。。于是搞了好几个小时,终于明白了pip 和easy_install、distribute 一样,是安装Python工具包的便捷管理工具。这几个管理工具的关系在:http…

MySQL中left join、right join与inner join的区别

1、数据库 1.1、作者表 1.2、图书表 1.3、出版社表 2、left join left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录。 2.1、sql语句 select * from app01_publisher left join app01_book on app01_publisher.id app01_book.publish_id 2.2、查询结果 3…

python得读音_python3 - 文本读音器

本篇分享的是使用python3制作一个文本读音器,简单点就是把指定的文本文字转语音说出来;做这么个小工具主要是为了方便自己在平时看一些文章眼累的时候,可通过语音来帮助自己,当然如果你是小说迷,可以扩展成一个小说读音…

Linux下python升级步骤

首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: 1 # wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 或自己去网上找,这里提供一个最新版的下载链接:http://xiazai.zol.com.cn/detail/33/320958.sht…

windows 下安装Simplejson方法

1.下载:http://pypi.python.org/pypi/simplejson/ 文件为压缩文件 2.解压:可以直接右键:解压文件.例如:D:/simplejson 3.开始---运行---输入命令:cmd 4.进入到目录(如:D:/simplejson&#xff09…

Vue(二十八)el-cascader 动态加载 - 省市区组件

1.后台接口为点击加载下一级 &#xff0c;传省市区id <template><el-cascaderv-model"selectedOptions"placeholder"请选择省市区":options"cascaderData"active-item-change"handleItemChange":props"{value: id,label…

用虚拟机安装了红帽后,我确实没设置用户名密码,但现在一打开就让输入用户名密码。这种情况该怎么办??

2011-05-05 15:22 提问者采纳破解root密码方法 1、在启动Linux时出现这个界面按e键。 2、按e键后出现选择界面 3、再按e键进入编辑状态。 4、用上、下键选择第二行以”kernel”开头的这一行&#xff0c;然后再按e键进入编辑状态 5、在此行的末尾&#xff0c;按空格键后输入sing…

Mongo数据库搭建

一、安装 1、首先下载Mongo程序&#xff0c;到官方网站上选择适合自己的版本下载&#xff0c;在这里我选择的win32平台下的程序包。解压之后配置相应的环境变量&#xff0c;即可在CMD命令窗口对Mongo进行操作。官方下载URL:http://www.mongodb.org/downloads 在该页面的下方有…

如何制作混合果汁?

天猫超市塞浦路斯Prima牌菠萝果汁汇源葡萄果汁 倒在一起。转载于:https://www.cnblogs.com/theodoric008/p/9792743.html

pl/postgresql_PostgreSQL PL / java简介

pl/postgresql现代数据库允许以多种语言编写存储过程。 一种常见的实现语言是java.NB&#xff0c;本文讨论了PostgreSQL特定的Java实现。 其他数据库的详细信息将有所不同&#xff0c;但概念将相同。 PL / Java的安装 在Ubuntu系统上安装PL / Java很简单。 我将首先创建一个新…

python输出文本和值_python读取文本中数据并转化为DataFrame的实例

在技术问答中看到一个这样的问题&#xff0c;感觉相对比较常见&#xff0c;就单开一篇文章写下来。 从纯文本格式文件 “file_in”中读取数据&#xff0c;格式如下&#xff1a;需要输出成“file_out”&#xff0c;格式如下&#xff1a;数据的原格式是“类别&#xff1a;内容”&…

欧拉回路与欧拉道路

图G的一个回路&#xff0c;若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。如果一个图只是形成一个连通所有节点的链&#xff0c;且每一点只走一次&#xff0c;则成为欧拉道路。具有欧拉回路或欧拉道路的图称为欧拉图&#xff08;简称E图&#xff09;。有向图的欧拉回路…

小心DLL链接静态库时的内存错误

最近写的模块&#xff0c;在独立的应用程序中测试是没问题的&#xff0c;但把它装配成DLL后&#xff0c;再在另一个应用程序中调用时却出现了内存错误。程序的模块链接关系大概是这样的&#xff1a; module就是我所写的模块&#xff0c;在这里被封装为DLL&#xff0c;因为要使用…

阿里试用,女朋友逼着我给她排序

阿里试用排序 抱歉&#xff0c;之前莫名其妙把配置文件给 ignore 了&#xff0c;已经修复&#xff0c;抱歉 前景提要 说来简直丢尽了钢铁直男的脸&#xff0c;没错&#xff0c;昨晚我在愉快的做着外包的活&#xff08;中国移动的小程序&#xff0c;自由职业&#xff0c;喂&…

用于Elasticsearch成绩单的Java客户端

在本演讲中&#xff0c;我将介绍用于Elasticsearch和Spring Data Elasticsearch的三个不同的客户端。 首先&#xff0c;让我们看一下Elasticsearch的一些基础知识。 弹性搜索 为了介绍elasticsearch&#xff0c;我使用的定义直接来自Elastic网站。 Elasticsearch是基于JSON的…

springmvc是什么_当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?

前文Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;通过把Model&#xff0c;View&#xff0c;Controller分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂的web应用分成逻辑清晰的几部分&#xff0c;简化开发&#xff0c;减少出…

怎么用python画饼状图_Python入门进阶:Python绘制饼图到Microsoft Excel

原标题&#xff1a;Python入门进阶&#xff1a;Python绘制饼图到Microsoft Excel 来自&#xff1a;Linux迷https://www.linuxmi.com/python-pie-chart-microsoft-excel.html 在本文中&#xff0c;我想向您展示使用Python向Microsoft Excel绘制饼图&#xff0c;为此我们将使用Xl…

Linux系统Shutdown命令定时关机详解

Linux系统下的shutdown命令用于安全的关闭/重启计算机&#xff0c;它不仅可以方便的实现定时关机&#xff0c;还可以由用户决定关机时的相关参数。在执行shutdown命令时&#xff0c;系统会给每个终端&#xff08;用户&#xff09;发送一条屏显&#xff0c;提示关机操作。定时关…

_ASSERTE(_CrtIsValidHeapPointer(pUserData))错误详解

可能原因&#xff1a;DLL和EXE主程序使用的不是同一个堆造成。 解决办法&#xff1a; 1. 采用谁分配谁释放的原则&#xff1b; 2. 绕过 new 和 delete&#xff0c;使用 GlovalAlloc 和 GlobalFree&#xff1b; 3. 更改工程选项&#xff0c; release 版本肯定不会出现这个失败&a…

【机器学习】【线性回归】梯度下降

文章目录 [toc]数据集实际值估计值估计误差代价函数学习率参数更新Python实现导包数据预处理迭代过程数据可视化完整代码 线性拟合结果代价结果 个人主页&#xff1a;丷从心 系列专栏&#xff1a;机器学习 数据集 ( x ( i ) , y ( i ) ) , i 1 , 2 , ⋯ , m \left(x^{(i)} , …