0

「ジェネリック コール スタックにマニフェストをアタッチする」方法を理解できれば (Joshua が「Scala in Depth」のセクション 7.2.2 で書いているように)、それらの行に沿って B をインスタンス化できるでしょうか?:

def m1[T](implicit m: Manifest[T]): T = m.erasure.newInstance.asInstanceOf[T]

class A {
  def m2[T](implicit m: Manifest[T]): T = m.erasure.newInstance.asInstanceOf[T]
  def inA() {
    m1[A]
    m2[A]
    m2[B] // Doesn't work...
  }
  class B
}

m1[A]
val a = new A
a.m2[A]
a.inA() // boom

または、ビューをバインドする必要がありますか?

4

1 に答える 1

1

Bこのような内部クラスのコンストラクターは外部クラスのオブジェクトへの参照を秘密裏に取得するため、このような内部クラスをインスタンス化することはできません。newInstance引数なしのコンストラクターを持つクラスでのみ呼び出すことができます。

于 2012-02-15T12:18:14.723 に答える