获取scala中参数化类的实例的参数化类型

时间:2011-06-19 21:23:39

标签: scala parameterization

我是Scala的新手。 我需要得到一个类的参数化。 我怎样才能做到这一点 ?这个类看起来像这样:

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

我在LinkedList中有很多OutPorts。在另一个类中,我想获得OutPort实例的参数化,但参数化是任意的,并且isInstanceOf的解决方案不具备。是否有一种特殊的方法用于此目的,我还没有涵盖呢?

Lunatikz

2 个答案:

答案 0 :(得分:5)

保持类型的清单,并使用它。如果你告诉我们你为什么要这样做,我们也可以更好地回答这个问题。

答案 1 :(得分:2)

如前所述,您可以使用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

以下是与Scala清单相关的一些SO主题:

What is a Manifest in Scala and when do you need it?

How does Scala's (2.8) Manifest work?

How do I get around type erasure on Scala? Or, why can't I get the type parameter of my collections?