我与斯卡拉型系统的以下问题,我目前不知道如何解决这个问题。斯卡拉:类型不匹配的问题与任何类型和模板类
基本上没有后续情况:
我有一个类,让我们把它叫做演员。这门课是模板化的。
class Actor[T](){
def setValue(value: T): Int = {
//do something with value
}
}
另一类具有迭代以下类型的HashMap中的方法:
var newValues = new HashMap[String, Any]()
此HashMap将包含Int类型和字符串的值。 HashMap的Key标识一个具体的Actor类,并确保该值的类型符合它引用的模板化的Actor类。
其他类迭代此HashMap的方法:
newValues.foreach(
kv => {
db.getActor(kv._1).setValue(kv._2) //db.getActor returns an Actor identified by kv._1
}
)
由于混凝土值(kv._2)具有像模板类相同的数据类型的运行时期间收到,我想阶引擎将能够投出任何类型到它的具体亚型T.
但是我在编译过程中出现以下错误:
found : kv._2.type (with underlying type Any)
required: _$3 where type _$3
db.getActor(kv._1).setValue(kv._2)
有谁知道解决这个问题?我认为,通过使用超类型的任何有可能绕过一个开关壳体,并使用对象的任何的asInstanceOf [T]。
希望有人能帮帮我!这里
你的意思是:你的类'Actor'是** **通用类,而不是一个“模板”级。请注意,像C++中的模板与Scala等语言中的泛型不同。 (泛型可能看起来像表面上的模板,但以完全不同的方式工作)。 – Jesper 2011-03-31 20:10:04