2

Scala菜鸟我害怕:

我有以下声明的类变量,它将我从数据库中读取的对象:

val options = mutable.LinkedList[DivisionSelectOption]()

然后我使用 JPA 从表中获取所有行的列表:

val divisionOptions = em.createNamedQuery("SelectOption.all", classOf[SelectOption]) getResultList
/* Wrap java List in Scala List */
val wrappedOptions = JListWrapper.apply(divisionOptions)
/* Store the wrappedOptions in the class variable */
options += wrappedOptions

但是,最后一行有一个错误:

Type Expected: String, actual JListWrapper[SelectOption]

谁能帮助我做错了什么?我只是想options用 DB 调用的结果填充对象。

谢谢

4

1 回答 1

1

(可能)正在发生的是 aJlistWrapper[SelectOption]不是 a DivisionSelectOption,因此该方法+=不适用于它。既然如此,它正在尝试其他的东西,并给出一个最终的错误:

options = options + wrappedOptions

这是 Scala 可以做的重写,以使之类x += 1的工作为var x. 该+方法存在于所有对象上,但它需要一个Stringas 参数——这样人们就可以编写类似的东西options + ":"并像在 Java 中那样工作。但既然wrappedOptions不是 a String,它就会抱怨。

我知道,迂回和混乱,甚至 Odersky 也对他关于+. 让这成为一个教训:如果你想添加一个方法Any那么在做之前要认真考虑。

于 2013-01-17T15:16:48.810 回答