0

我正在尝试做这样的事情:

import scala.swing

class componentMapper {

     val map = Map[Class[_], Componenet]()

     def apply(c: Class[_], component: Component) = map += (c -> componenet)

}

class Render extends ComponentMapper {

     def getRenderer(value: AnyRef) = map(value.getClass)

}

这似乎不起作用。我应该为 Class 使用什么类型参数?

4

1 回答 1

4

我不完全确定核心问题是什么,但它不是类的类型参数。“->”似乎是一些奇怪的类型推断问题。以下编译并正常工作。

import scala.swing._

class ComponentMapper {
  var map = Map[Class[_], Component]()
  def apply(c: Class[_], component: Component) = map += ((c, component))
}

class Render extends ComponentMapper {
  def getRenderer(value: AnyRef) = map(value.getClass)
}

请注意,我必须对您的代码进行许多小的更正,才能找到您所说的问题。

我已经提交了一张票,以防万一它是可以修复的:https ://lampsvn.epfl.ch/trac/scala/ticket/1974 。

于 2009-05-11T20:24:42.567 回答