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

huy*_*hjl 17 scala scala-2.8

试图从这个SO问题编译一些代码并遇到此错误消息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) }
Run Code Online (Sandbox Code Playgroud)

我可以看到new collection.mutable.GenericArray[T](2)解决了这个问题.显然提供清单是另一种选择......但是"提供明显的意思"是什么?

Tho*_*ung 19

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

def f[T : Manifest](a:T, b:T):Array[T] = { new Array[T](2) }
Run Code Online (Sandbox Code Playgroud)

或清单作为隐含参数:

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

前者是后者的语法糖.该清单是必要的,因为关于T上的类型信息,由于缺少通用型errasure JVM的.