加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用Scala 2.9.2中的ListView和Java 7会产生编译错误

发布时间:2020-12-16 18:47:42 所属栏目:安全 来源:网络整理
导读:我正在开发一个使用 scala 2.9.2和 java 7的项目. 我要做的是使用scala ListView创建一个GUI. 这是一个小代码片段: private val listView = new ListView[Document](someList)...for (selectedDocument - listView.peer.getSelectedValuesList) { doSomethi
我正在开发一个使用 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并添加了“typed peer”.

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

    def selectionEmpty = typedPeer.isSelectionEmpty

    // Other functions omitted
}

效果很好!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读