使用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 } 效果很好! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |