标记为“已弃用”的 API 方法什么时候才会真正消失?

2024-03-30

我正在代码审查我的一位同事刚刚所做的更改,他添加了一堆调用Date.toMonth(), Date.toYear()和其他已弃用的Date方法。所有这些方法在 JDK 1.1 中均已弃用,但他坚持认为使用它们是可以的,因为它们还没有消失(我们正在使用 JDK 1.5),而且我说它们现在可能随时消失,他应该使用Calendar方法。

Sun/Oracle 是否真的说过这些事情即将消失,或者确实说过@deprecated只是意味着你失去了风格点?


关于 API,...没有指定它们会很快被删除。

J2SE 5.0 中的不兼容性(自 1.4.2 起) http://java.sun.com/j2se/1.5.0/compatibility.html:

源兼容性

[...]
一般来说,该政策如下,但下面进一步列出的任何不兼容之处除外:

已弃用的 API 是仅支持向后兼容的接口。只要使用其中之一,javac 编译器就会生成警告消息,除非使用 -nowarn 命令行选项。建议修改程序以消除使用已弃用的 API,尽管目前没有计划删除此类 API– JVMDI 和 JVMPI 除外 – 完全来自系统。

即使在其如何以及何时弃用 API http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/deprecation.html,实际上没有提及任何有关政策removing已弃用的 API...


10年后更新,新的JDK9+ 增强弃用 https://docs.oracle.com/javase/9/core/enhanced-deprecation1.htm#JSCOR-GUID-23B13A9E-2727-42DC-B03A-E374B3C4CE96明确折旧政策。
See 延斯·班曼 https://stackoverflow.com/users/7641/jens-bannmann's answer https://stackoverflow.com/a/50445603/6309更多细节。
这篇博文中也详细介绍了这一点沃伊捷赫·鲁日卡 https://twitter.com/vojtechruzicka, 下列的对 JEP 277 的批评 https://blog.jooq.org/2015/12/22/jep-277-enhanced-deprecation-is-nice-but-heres-a-much-better-alternative/.

JDK 的约定是,一旦 JDK API 被标记为forRemoval=true在某个Java版本中,它将在接下来的主要 Java 版本中删除.
这意味着 - 当某物被标记为forRemoval=true在 Java 9 中,它应该在 Java 10 中完全删除。
使用标记为删除的 API 时请记住这一点。

请注意,此约定仅适用于 JDK 本身,第三方库可以自由选择他们认为合适的任何约定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标记为“已弃用”的 API 方法什么时候才会真正消失? 的相关文章

  • Python日期字符串到日期对象

    如何在 python 中将字符串转换为日期对象 该字符串将是 24052010 对应格式 d m Y 我不需要 datetime datetime 对象 而是 datetime date 您可以使用strptime http docs py
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 从 GitHub 上托管的 Spring Cloud Config Server 访问存储库的身份验证问题

    我在 GitHub 上的存储库中托管配置 如果我将回购公开 一切都好 但如果我将其设为私有 我将面临 org eclipse jgit errors TransportException https github com my user m
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 如何在 Spring 属性中进行算术运算?

  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • Spark 中打开的文件太多,中止 Spark 作业

    在我的应用程序中 我正在读取 40 GB 的文本文件 这些文件完全分布在 188 个文件中 我拆分此文件并使用 rdd 对在 Spark 中每行创建 xml 文件 对于 40 GB 的输入 它将创建数百万个小 xml 文件 这是我的要求 一
  • IE 9 在悬停时重置背景位置(IE bug?)

    我不敢相信我发现了一些在 IE8 和 IE7 中都有效但在 IE9 中失败的东西 这是我正在处理的页面 网站链接 1 请注意 在 IE9 中 当悬停链接时 浏览器在侧面菜单上如何将背景重置为background position 0 0并且
  • 在 sbt 中添加仅编译时的子项目依赖项

    我有一个多项目包含一个私有宏子项目 其用途仅限于实现其他子项目的方法体 它既不应该出现在其他子项目的运行时类路径上 也不应该以任何形式在其他子项目已发布的 POM 中可见 这样其他 sbt 项目就可以在不知道宏子项目的情况下使用该项目中的库
  • Keycloak 缺少表单参数:grant_type

    我的本地计算机上有独立运行的 keycloak 我创建了名为 spring test 的新领域 然后创建了名为 login app 的新客户端 根据其余文档 POST http localhost 8080 auth realms spri
  • 如何对前 5 个有值的单元格求平均值

    我有一个类似这样的电子表格 我只想对前 5 个包含数据的单元格进行平均 我怎样才能做到这一点 随着列表获取更多数据 如下所示 我希望能够定位一个单元格 如 A10 并从该单元格返回 5 同样 只有当它里面有数据时 所以图像的公式应该是这样的
  • 邮政编码 + 国家/地区到地理坐标

    获取给定国家 地区的给定邮政编码 邮政编码的坐标 纬度 经度 的最完整 精确和可靠的方法是什么 我需要发出大量请求 因此高 API 限制率 甚至可能不存在 会很有用 GeoNames http www geonames org postal
  • 使用 movsd 让编译器复制字符

    我想在时间关键的函数中复制相对较短的内存序列 小于 1 KB 通常为 2 200 字节 CPU 端的最佳代码似乎是rep movsd 但是我不知何故无法让我的编译器生成此代码 我希望 我隐约记得看到过 使用 memcpy 可以使用编译器内置
  • 使用“严格引用”时不能使用字符串(“1”)作为子例程引用

    在对我尝试使用的各种事件做出反应的 Perl 守护进程中空对象模式 http en wikipedia org wiki Null Object pattern在 2 种情况下 通过创建匿名子例程 它应该只返回值 1 又名 true 请滚动
  • SQLAlchemy 与辅助表连接行为的关系在延迟加载和急切加载之间发生变化

    我已经使用 SQL Alchemy 几个月了 到目前为止 它给我留下了深刻的印象 我现在遇到了一个问题 这似乎是一个错误 但我不确定我是否在做正确的事情 我们在这里使用 MS SQL 通过表反射来定义表类 但是我可以使用内存 SQLite
  • maven部署到本地仓库

    有人可以告诉我如何将工件部署到本地存储库中以测试部署场景吗 问题是我们使用 nexus 作为远程存储库 我想知道是否可以使用自定义名称而不是 nexus 为我们提供的名称来部署我的工件 提前致谢 使用以下命令 mvn install ins
  • 使用正则表达式来匹配 IP 地址

    我正在尝试进行测试以检查 sys argv 输入是否与 IP 地址的正则表达式匹配 作为一个简单的测试 我有以下 import re pat re compile d 1 3 d 1 3 d 1 3 d 1 3 test pat match
  • SQL Server 围绕数字和下划线进行全文搜索

    使用 SQL Server 2012 通常使用 SQL Server 2008 R2 到 SQL Server 2016 这个问题是更具体的重新措辞SQL Server 全文索引意外结果 https stackoverflow com qu
  • 使用cache-control: no-store有什么缺点?

    我们希望 防止无意中释放或保留敏感信息 例如 在备份磁带上 并计划使用 HTTP 标头 Cache control no store 这样做有什么缺点 从规范来看 缓存似乎将继续运行 它只是不能使用非易失性存储 为了选择指定不存储的响应 我
  • 字符串到 xmlNode delphi(或如何将 xml 片段添加到 TXMLDocument)

    我有一些包含格式良好的 XML 的文本字符串 我希望能够 1 将这些字符串变成IXMLNodes然后 2 将它们附加到现有的XMLDocument 最好不声明新的XMLDocument第一的 这似乎不可能 有没有什么简单的方法可以完成等效的
  • 无法跟踪 sudo;报告有效 uid 不为零

    command bigxu bigxu ThinkPad T410 work lean sudo ls content shell pak leanote libgcrypt so 11 libnotify so 4 MACOSX reso
  • Newtonsoft 对象 → 获取 JSON 字符串

    我有一个由 Newtonsoft 的 JSON 序列化器创建的对象 我需要获取用于创建对象的 JSON 字符串 如何将对象序列化为简单的 JSON 字符串 尝试这个 public string jsonOut Returns JSON st
  • 由于 #ifdef,ctags 在带有不平衡大括号的源文件中被阻塞

    我在用ctags生成一个tags我正在处理的 C 项目的文件 但文件中缺少许多函数 这似乎是由于使用源文件中的大括号不平衡造成的 ifdef 一个 简化的 例子 include
  • 如何旋转 3D 散点图

    下面的代码使用 scatterplot3d 函数来运行高度 重量和体积的 3D 散点图 其中点是 1 6 之间的类值 角度目前为 45 度 我知道我可以通过改变角度来倾斜绘图 我应该使用什么代码将绘图向左或向右旋转 以便我可以提供绘图的多个
  • Android模拟器加载但不加载程序?

    我很确定我已经安装了所有必要的东西 我创建了 AVD 并尝试运行 SDK 中包含的示例应用程序之一 Jetboy 当我点击运行时 程序模拟器启动并最终加载 android 但没有应用程序启动 这是输出 2011 12 14 16 16 24
  • 标记为“已弃用”的 API 方法什么时候才会真正消失?

    我正在代码审查我的一位同事刚刚所做的更改 他添加了一堆调用Date toMonth Date toYear 和其他已弃用的Date方法 所有这些方法在 JDK 1 1 中均已弃用 但他坚持认为使用它们是可以的 因为它们还没有消失 我们正在使