1

私はScalaでかなり新しいです。クラスのパラメータ化を取得する必要があります。これどうやってするの ?クラスは次のようになります。

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

LinkedList で多くの OutPort を取得しました。別のクラスでは、OutPort のインスタンスのパラメーター化を取得したいのですが、パラメーター化は任意であり、isInstanceOf を使用したソリューションは機能しません。私がまだカバーしていない、そのような目的のための特別な方法はありますか?

ルナティックス

4

2 に答える 2

5

そのタイプのマニフェストを保持し、それを使用します。なぜそれを取り戻したいのかを教えていただければ、私たちもその質問にもっとよく答えられるかもしれません。

于 2011-06-19T21:34:03.077 に答える
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 トピックは次のとおりです。

Scala のマニフェストとは何ですか?いつ必要になりますか?

Scala の (2.8) マニフェストはどのように機能しますか?

Scalaで型消去を回避するにはどうすればよいですか? または、コレクションの型パラメーターを取得できないのはなぜですか?

于 2011-06-20T01:23:00.683 に答える