gpt4 book ai didi

database - Java 7 和 8 之间针对重载函数的源代码兼容性

转载 作者:搜寻专家 更新时间:2023-10-30 20:09:15 24 4
gpt4 key购买 nike

我为 JDBC 驱动程序(使用 -source/-target 编译选项)为 Java 7 和 8 创建了一个 jar。但是,我在编译在 ResultSet 接口(interface)中使用新方法/重载方法的应用程序时遇到困难:

//New in Java 8

updateObject(int columnIndex, Object x, SQLType targetSqlType)

// Available in Java 7

updateObject(int columnIndex, Object x, int targetSqlType)

请注意,SQLType 是 Java 8 中引入的新接口(interface)。

我已经使用 Java 8 编译了驱动程序,它运行良好。然而,当使用该驱动程序的任何应用程序从 Java 7 访问方法 updateObject(int, Object, int) 时,它会收到一个编译错误,提示“找不到 java.sql.SQLType 的类文件”,尽管应用程序未使用 SQLType。我认为这是因为 Java 查看所有重载方法以确定最具体的方法,并且在这样做时它无法访问 Java 8 中新的 updateObject 方法(如 SQLType 未在 Java 7 中定义)。知道如何解决这个问题吗?

请注意,updateObject 方法在 Java 8 的 ResultSet 接口(interface)中有一个默认 实现——所以我什至不能使用更通用的类型,而不是新方法中的 SQLType。在那种情况下,任何使用新方法的应用程序都会收到一个编译错误,提示 updateObject is ambiguous。

最佳答案

您不能在较低版本(例如 Java 7)中使用在 Java 8(例如)中编译的内容。您将得到类似 Unsupported major.minor version... 的信息。您需要使用两个 JAR,一个用于版本 1.7,另一个用于版本 1.8。最终,如果那个 JDK 不支持它,那么 1.7 就不能有那个 SQLType;另一方面,我们鼓励您在执行 1.8 版本时维护重载版本。

请注意,这与向后兼容性没有无关。

关于database - Java 7 和 8 之间针对重载函数的源代码兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com