找不到元素类型T的类清单

时间:2010-02-12 14:58:25

标签: scala scala-2.8

尝试从this SO question编译一些代码并遇到此错误消息cannot find class manifest for element type T。这是显示行为的另一个片段:

scala> def f[T](a:T, b:T):Array[T] = { new Array[T](2) }
<console>:4: error: cannot find class manifest for element type T
       def f[T](a:T, b:T):Array[T] = { new Array[T](2) }

我可以看到new collection.mutable.GenericArray[T](2)解决了这个问题。显然提供清单是另一种选择......但“提供清单意味着什么”

1 个答案:

答案 0 :(得分:19)

要提供类型信息,您可以使用上下文绑定

def f[T : Manifest](a:T, b:T):Array[T] = { new Array[T](2) }

或清单作为隐含参数:

def f[T](a:T, b:T)(implicit manifest : Manifest[T]) : Array[T] = { new Array[T](2) }

前者是后者的语法糖。需要manifest,因为由于JVM的通用type errasure而缺少关于T的类型信息。