Компилятор Scala не может определить, какой перегруженный метод вызывать - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь вызвать один из перегруженных методов query () в классе Spring 3.0 JdbcTemplate в Scala ...

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

Несмотря на то, что я явно определил тип возвращаемого значения переменной результатов, почему компилятор не может определить, какой метод запроса вызывать?

1 Ответ

2 голосов
/ 10 августа 2011

Метод query, который вы вызываете, возвращает объект типа java.util.List[T]. Очевидно, вы ожидаете Scala List.

...