我與斯卡拉型系統的以下問題,我目前不知道如何解決這個問題。斯卡拉:類型不匹配的問題與任何類型和模板類
基本上沒有後續情況:
我有一個類,讓我們把它叫做演員。這門課是模板化的。
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