Scala 编译器无法确定要调用哪个重载方法

发布于 2024-11-28 11:17:11 字数 844 浏览 0 评论 0原文

我试图在 Scala 中调用 Spring 3.0 的 JdbcTemplate 类中的重载 query() 方法之一......

val args: Array[Object] = new Array[Object](1)
args(0) = id
val results: List[MyObj] = jdbcTemplate.query(SQL_STRING, args, new MyJdbcStore.MyObjRowMapper)

并且我得到一个堆栈跟踪,上面写着“使用替代方案重载方法值查询”。 (上面代码片段中的 MyObjRowMapper 是一个类,在 MyJdbcStore 的伴生对象中定义,它扩展了 Spring 的 RowMapper 接口。)“替代品”是分别具有这些参数的 query() 的三个版本:

java.lang.String, Array[java.lang.Object], org.springframework.jdbc.core.ResultSetExtractor
java.lang.String, org.springframework.jdbc.core.PreparedStatementSetter, org.springframework.jdbc.core.ResultSet
org.springframework.jdbc.core.PreparedStatementCreator, org.springframework.jdbc.core.PreparedStatementSetter, org.springframework.jdbc.core.ResultSetExtractor

尽管我已明确定义结果变量的返回类型,为什么编译器无法确定调用哪个查询方法?

I'm trying to call one of the overloaded query() methods in Spring 3.0's JdbcTemplate class in Scala...

val args: Array[Object] = new Array[Object](1)
args(0) = id
val results: List[MyObj] = jdbcTemplate.query(SQL_STRING, args, new MyJdbcStore.MyObjRowMapper)

...and I get a stack trace that says, "overloaded method value query with alternatives." (The MyObjRowMapper in the above code snippet is a class, defined in MyJdbcStore's companion object, that extends Spring's RowMapper interface.) The "alternatives" are the three versions of query() that have these parameters respectively:

java.lang.String, Array[java.lang.Object], org.springframework.jdbc.core.ResultSetExtractor
java.lang.String, org.springframework.jdbc.core.PreparedStatementSetter, org.springframework.jdbc.core.ResultSet
org.springframework.jdbc.core.PreparedStatementCreator, org.springframework.jdbc.core.PreparedStatementSetter, org.springframework.jdbc.core.ResultSetExtractor

Even though I've explictly defined the return type of the results variable, why can't the compiler determine which query method to call?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可是我不能没有你 2024-12-05 11:17:11

您调用的 query 方法返回一个 java.util.List[T] 类型的对象。显然您正在期待一个 Scala 列表。

The query method you are invoking returns an object of type java.util.List[T]. Apparently you are expecting a Scala List.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文