Стирание типа Scala для сопоставления с образцом

Я искал на форуме и в Google ответы на вопросы о стирании типов для Scala. Однако я не могу найти ничего, что отвечает на мой вопрос.

Я борюсь с сопоставлением шаблонов для объектов, которые соответствуют параметру типа ParamClass. Мне нужно сопоставить шаблон типа входящих объектов с методом панели. Я видел такие решения, как

bar[X](a : X)(implicit m : Manifest[X])

что решило бы мою проблему, но я не могу использовать это, поскольку метод bar является переопределенным методом. (На самом деле это частичная функция приема в структуре актера Akka ). Код приведен ниже и не требует пояснений:

class ParamClass[A : Manifest] {
  def bar(x : Any) = x match {
    case a: A => println("Found A: " + a)
    case _ =>    println("No match: " + x)
  }
}

object ErasureIssue {
  def main(args: Array[String]) {
    val clz = new ParamClass[Int]
    clz.bar("faf")
    clz.bar(2.3)
    clz.bar(12)   // this should match, but does not
  }
}

ErasureIssue.main(null)

Любая помощь в решении этой проблемы приветствуется. Я использую Scala 2.9.1, кстати.

-Дж

5
задан 0__ 8 August 2012 в 12:33
поделиться