将 Scala 2.9.2 中的 ListView 与 Java 7 一起使用会出现编译错误

2024-01-10

我正在开发一个使用 scala 2.9.2 和 java 7 的项目。

我想做的是使用 scala ListView 创建一个 GUI。

这是一个小代码片段:

private val listView = new ListView[Document](someList)
.
.
.
for (selectedDocument <- listView.peer.getSelectedValuesList) {
    doSomething(selectedDocument)
}

这给了我以下编译错误:

error: something is wrong (wrong class file?): class JList with type parameters [E] gets applied to arguments [], phase = namer for (selectedDocument <- listView.peer.getSelectedValuesList) {

我猜这是因为在 ListView 中,peer 是在没有类型参数的情况下定义的:

override lazy val peer: JList = new JList with SuperMixin

所以问题是:是否无法在 Java 7 中使用 scala-swing 中的 ListView?


通过扩展 Scala 的 ListView 并添加“类型化对等点”解决了这个问题。

class ExtendedListView[A: ClassManifest] extends ListView[A] {
    lazy val typedPeer: JList[A] = peer.asInstanceOf[JList[A]]

    def selectionEmpty = typedPeer.isSelectionEmpty

    // Other functions omitted
}

效果很好!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Scala 2.9.2 中的 ListView 与 Java 7 一起使用会出现编译错误 的相关文章

随机推荐