我正在嘗試解決模式匹配中的類型擦除問題。假設:解決模式匹配中的類型擦除問題
import java.io._
trait Serializer[V] {
def save(os: OutputStream, v: V): Unit
def load(in: InputStream): V
}
trait HasSerializer[V] { def serializer: Serializer[V] }
我怎樣才能得到這個沒有警告,沒有asInstanceOf
編譯:
def test[V](os: OutputStream, v: V): Unit = v match {
case hs: HasSerializer[V] => hs.serializer.save(os, v)
case _ => ???
}
?用地圖中的值調用test
,並且沒有辦法提供類清單。
任何花哨的提取技巧也許?
「任何類型都可以混合它」不是當然,這是真的。這個問題仍然適用於現有的類型,假設我們想爲「Int」提供一個序列化程序(如Alex的例子)... – 2011-04-15 16:05:50