Я пытаюсь обойти стирание типа при сопоставлении с образцом. Предполагая:
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
вызывается со значением из карты, и нет никаких средств для предоставления манифеста класса.
Может быть, какой-нибудь необычный трюк с экстрактором?