Java 6 源代码向后兼容性和 SQL

2023-11-21

我的理解是,为了保持源兼容性,Java 永远不会向公共接口引入新方法,因为这会破坏实现接口的现有客户端。Java 发行说明 states

一般来说,政策如下: 除了任何不兼容的情况 进一步列出如下:

  • 维护版本(例如 1.4.1、 1.4.2) 不引入任何新的语言特性或API。他们会 保持源代码兼容性 彼此。

  • 功能发布和主要 版本(例如 1.3.0、1.4.0、5.0) 维持向上但不向下 源兼容性。

然而,包裹java.sql and javax.sql继续发展并引入许多不兼容的变化。例如,我注意到以下不兼容的更改(在 Java 6 中引入):

  • java.sql.Statement延伸java.sql.Wrapper,需要新的两种新方法。
  • java.sql.Statement引入3种新方法
  • java.sql.PreparedStatement引入19种新方法!
  • java.sql.ResultSet引入48种新方法!

您知道如何以及为什么添加这些方法吗?是java.sql受到与平台其他部分不同的对待?您知道围绕这些添加内容的讨论/JSR 吗?


我收到 Sun 开发人员的以下回复

JDK 中针对 JDK 7 等功能版本的 API 的一般演变策略是

  1. 不要破坏二进制兼容性(如 JLSv3 第 13 章中定义)
  2. 避免引入源不兼容的情况
  3. 管理行为兼容性变化

(有关不同类型兼容性的更多信息,请参阅

“兼容性的种类:源、二进制和行为” and “兼容进化的BigDecimal”

向接口添加方法是二进制的兼容的 but source不兼容,所以不常见。一般来说,接口的实现越广泛,我们向其添加方法的可能性就越小。 JDBC 区域是此策略的一个例外,它使用更宽松的升级规则,但是当人们想要升级到新的 JDK 版本时,这确实会导致真正的问题。

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

Java 6 源代码向后兼容性和 SQL 的相关文章

随机推荐

  • 忽略库内抛出和捕获的异常

    我使用的 Python 标准库和其他库 例如 PyQt 有时会在非错误条件下使用异常 除了函数之外看下面os get exec path 它使用多个try用于捕获在尝试查找某些环境数据时引发的异常的语句 try path list env
  • 在 Python 中使用命令行参数:了解 sys.argv [重复]

    这个问题在这里已经有答案了 我目前正在学习 艰难地学习Python 我认为这个例子可能已经过时了 所以我想在这里得到反馈 我正在使用Python 3 1 from sys import argv script first second th
  • ValueError:Python 字典中无法解压的值太多[重复]

    这个问题在这里已经有答案了 我有一个接受字符串 列表和字典的函数 def superDynaParams myname likes relatives n is a list and n is dictionary print print
  • JavaScript - 字符串正则表达式反向引用

    您可以在 JavaScript 中像这样反向引用 var str 123 test 123 str str replace a z gi 2 这将 非常愚蠢 用 test 替换 test 但想象一下我想将 2 的结果字符串传递给一个函数 该
  • 如何在 IE9 中使用 MSHTML 的 addEventListener 添加事件侦听器?

    MSDN 文档为addEventListener表示它接受以下形式的回调函数IDispatch 目的 从 C 我使用 COM 互操作 Visual Studio 将参数类型显示为object 我找了一个IEventListener界面或类似
  • C# 从字符串中解析浮点数

    我正在从 XML 文件中读取数字 其他数字带有逗号分隔符 0 1111 其他数字带有点 0 1111 我如何解析这些数字才能最终得到所需的结果 我尝试使用float Parse reader Value System Globalizati
  • VisualSVN 服务器 3.2 - 意外的 HTTP 状态 405

    我在计算机上安装了 VisualSVN Server 以进行源代码控制 当我尝试通过存储库浏览器访问它时 出现错误 Unexpected HTTP Status 405 Method Not Allowed on 23WEB view he
  • Visual Studio 可以像 app.config 一样自动调整其他文件的名称吗?

    将应用程序配置文件添加到 Visual Studio 中的 Net 项目时 它将被命名为app config并将被重命名 在构建时 为ApplicationName config 我有一个包含大约 40 个项目的解决方案 我想为其中一些添加
  • 从列表中删除重复的元素

    我有一个list of character vectors my list lt list e1 c a b c k e2 c b d e e3 c t d g a f 我正在寻找一个function对于任何character出现不止一次l
  • 将数据从 firestore 导入 bigQuery

    我已将我的帐户升级为 blaze 这是先决条件之一 我尝试遵循FAQ将 BigQuery 链接到 Firebase 仍然无法看到从 firestore 或 firebase realtimeDatabase 到 bigQuery 的任何数据
  • aws sns 确认订阅请求处理问题

    我正在尝试为 s3 中的存储桶实现 aws sns 服务 并且我正在关注此文档https docs aws amazon com sns latest dg SendMessageToHttp html据此 确认订阅的请求中将有订阅 url
  • Java中的单继承作弊?

    我听说有一种方法可以欺骗单继承并在Java中实现多重继承 有谁知道如何实现这个 不使用接口 只是出于好奇 当然可以 但这很棘手 您应该认真考虑这是否是您想要的方式 这个想法是使用基于范围的继承和基于类型的继承 这是类型对话 表示出于内部目的
  • jquery ui sortables 连接列表:复制项目

    我有两个列表 我希望它们都可以排序 并且希望能够将项目从 list1 复制 拖动 到 list2 反之亦然 http jqueryui com demos sortable connect lists 是我想要的 但项目被移动 而不是复制
  • 圆-矩形碰撞检测(交叉点)

    如何判断圆形和矩形在二维欧几里得空间中是否相交 即经典的二维几何 我将这样做 bool intersects CircleType circle RectType rect circleDistance x abs circle x rec
  • 如何使用 PHP 将文件从服务器复制到 Dropbox? [复制]

    这个问题在这里已经有答案了 我想我可能找到了一个 PHP 程序 可以将特定文件夹中的文件上传到我的 Dropbox 帐户 完整的解决方案可以找到here 该代码似乎有效 因为正在上传类似的文件和文件夹 但是 我不希望预先压缩服务器上的文件
  • 仅使用 javascript 列出目录中的文件

    是否可以仅使用 javascript 列出目录中的文件 为了澄清 我的意思是列出服务器上的文件 而不是客户端计算机上的文件 例如 www domain com files 包含 4 张图片 jpg 我可以创建一个额外的页面 www doma
  • 在 RMarkdown 中缩进而不添加项目符号点或数字

    我想制作一个缩进列表 但我不希望它有要点或数字 我在 RStudio 中使用 Rmarkdown 并编织为 html bla bla bla Example indented line with bullet point Another i
  • 使用来自多个点的多个图像构建 3D 模型 (kinect)

    如果从不同角度收集各种图像和深度数据 是否可以构建静止物体的 3D 模型 我的想法是有一种圆形传送带 其中将放置 kinect 并且传送带同时要在 3D 空间中重建的真实物体位于中间 此后传送带围绕图像旋转一圈 并捕获大量图像 可能每秒 1
  • python numpy 机器 epsilon

    我想了解什么是机器 epsilon 根据维基百科 可以计算如下 def machineEpsilon func float machine epsilon func 1 while func 1 func machine epsilon f
  • Java 6 源代码向后兼容性和 SQL

    我的理解是 为了保持源兼容性 Java 永远不会向公共接口引入新方法 因为这会破坏实现接口的现有客户端 Java 发行说明 states 一般来说 政策如下 除了任何不兼容的情况 进一步列出如下 维护版本 例如 1 4 1 1 4 2 不引