Почему мой шаблон не подходит в Scala? - PullRequest
2 голосов
/ 23 августа 2011

Мой метод следующий

  protected override def onEvent(event: Class[_]) = event match {
    case event: mydomain.Quote => println("qu")
    case _ => println("eventsample" + event)

  }

Консоль распечатывает следующее

eventsampleclass mydomain.Quote

Я думал, что это было бы поймано в соответствии с шаблоном

1 Ответ

10 голосов
/ 23 августа 2011

Нет соответствия, так как ваш шаблон ищет экземпляр Quote и вы передаете classOf[Quote], который является экземпляром Class[Quote], а не Quote.

Чтобы соответствовать, вы бы позвонили onEvent(new myDomain.Quote(...)), а не onEvent(classOf[myDomain.Quote]). (К сожалению, компилятор принимает ваш первый шаблон, так как у него нет шансов совпадать с событием типа Class).

Если вы хотите распознать класс [Quote], вы можете использовать шаблон case c if c == ClassOf[Quote], но я не вижу никакой причины не делать это с простым if / else

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...