Как обойти стирание типа при сопоставлении с образцом

Я пытаюсь обойти стирание типа при сопоставлении с образцом. Предполагая:

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 вызывается со значением из карты, и нет никаких средств для предоставления манифеста класса.

Может быть, какой-нибудь необычный трюк с экстрактором?

6
задан 0__ 27 September 2013 в 19:43
поделиться