cannot find class manifest for element type T

感情迁移 提交于 2019-11-29 02:53:32

问题


Was trying to compile some code from this SO question and run into this error message cannot find class manifest for element type T. Here is another snippet that shows the behavior:

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) }

I can see that new collection.mutable.GenericArray[T](2) fixes the issue. Apparently providing a manifest is the other option... But what does "providing a manifest mean"?


回答1:


To provide type information you can use a context bound

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

or the manifest as an implicit argument:

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

The former is syntactic sugar for the later. The manifest is needed because the type information about T is missing due to generic type errasure of the JVM.



来源:https://stackoverflow.com/questions/2252641/cannot-find-class-manifest-for-element-type-t

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!