Получение типа параметризации экземпляра параметризованного класса в scala - PullRequest
1 голос
/ 20 июня 2011

Я совсем новичок в Скале. Мне нужно получить параметризацию класса. Как я могу это сделать ? класс выглядит так:

   class OutPort[T](name: Symbol, owner: Component) extends Port[T](name)

Я получил много OutPorts в LinkedList. В другом классе я хочу получить параметризацию экземпляра OutPort, но параметризация является произвольной, и решение с isInstanceOf не способно. Есть ли специальный метод для этой цели, который я еще не рассмотрел?

Lunatikz

Ответы [ 2 ]

5 голосов
/ 20 июня 2011

Держите манифест этого типа и используйте его.Если вы сказали нам, почему вы хотите получить это обратно, мы могли бы также ответить на этот вопрос лучше.

2 голосов
/ 20 июня 2011

Как упоминалось ранее, вы можете использовать ClassManifest или манифест.Вот пример использования:

class Foo[T](t: T)(implicit m: ClassManifest[T]) {
  def foo = m toString
}

scala> (new Foo(5)) foo

`res1: java.lang.String = Int

scala> (new Foo("hi")) foo
res2: java.lang.String = java.lang.String

scala> (new Foo(new scala.swing.Frame)) foo
res3: java.lang.String = scala.swing.Frame

Вот некоторые SO темы, связанные с манифестами Scala:

Что такое манифест в Scala и когда он вам нужен?

Как работает манифест Scala (2.8)?

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

...