我正在尝试解决模式匹配中的类型擦除问题。假设:解决模式匹配中的类型擦除问题
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