如果我能弄清楚如何“将清单附加到通用调用堆栈”(正如Joshua在“深度Scala”的第7.2.2节中所写的那样),是否可以使我沿着这些线实例化B?:< / p>
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
或者我需要一些视图绑定吗?
答案 0 :(得分:1)
您无法像这样实例化内部类B
,因为此类内部类的构造函数秘密地引用外部类的对象。 newInstance
只能在具有零参数构造函数的类上调用。