Как получить фактический тип универсального типа? - PullRequest
8 голосов
/ 23 марта 2011

Существует класс с универсальным типом:

class Action[T]

Создайте несколько экземпляров этого, поместите в список:

val list = List(new Action[String], new Action[Int])

Итерируйте это, и как получить фактический тип экземпляров?

list foreach { action =>
     // how do I know the action is for a String or an Int?
}

1 Ответ

11 голосов
/ 23 марта 2011

Scala стирает параметры универсального типа при компиляции, поэтому вам нужно иметь некоторые дополнительные доказательства в вашем объекте, помимо того, что обеспечивает традиционное отражение. См:

Как мне обойти удаление типа в Scala? Или, почему я не могу получить параметр типа моих коллекций?

Этот вопрос предполагает, что в некоторых обстоятельствах может быть какое-то волшебство:

Учет параметров типа в универсальном классе Scala "метод equals" ... является единственным способом?

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