Scala 如何使用class的类型参数创建映射

Scala 如何使用class的类型参数创建映射,scala,Scala,我正在尝试这样做: 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:

我正在尝试这样做:

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)

}

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

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

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)
}
请注意,我必须对您的代码进行许多小的修改,以便找到您所说的问题


我已经提交了一张罚单以防万一,希望它是可以修复的

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

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)
}
请注意,我必须对您的代码进行许多小的修改,以便找到您所说的问题


我已经提交了一张罚单以防万一,希望它是可以修复的

我从未使用过Scala,但我知道它在JVM上运行。。。映射不是一个接口而不是一个类吗?试试HashMap,Scala有内置的映射。上面的映射[…])就像一个静态工厂方法。我从未使用过Scala,但我知道它在JVM上运行。。。映射不是一个接口而不是一个类吗?试试HashMap,Scala有内置的映射。上面的映射[…])类似于静态工厂方法。