Scala 编译器无法确定要调用哪个重载方法
我试图在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您调用的
query
方法返回一个java.util.List[T]
类型的对象。显然您正在期待一个 Scala 列表。The
query
method you are invoking returns an object of typejava.util.List[T]
. Apparently you are expecting a Scala List.