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 回答