通常获取Scala类型的清单

Jos*_*osh 3 scala manifest

有没有办法一般性地获得Scala类型的清单?例如,如果我只有一个Class引用可以使用,有没有办法可以获得相应的清单?

Dan*_*mon 7

Scala的内置implicitly[T]函数将为您提供类型为T的隐式值(如果存在).所以implicitly[Manifest[T]]将返回类型为T的清单.

如果你有一个Class引用,你可以像这样获得Class的Manifest:

def manifestFor[T: Manifest](c: Class[T]) = implicitly[Manifest[T]]

class Foo
val x =  new Foo
manifestFor(x.getClass)
//scala.reflect.Manifest[_ <: Foo] = _ <: Foo
Run Code Online (Sandbox Code Playgroud)

Manifest的类型_ <: Foo不是公正的Foo,而是相同的.

implicitly[Manifest[Foo]] == manifestFor(x.getClass)
//Boolean = true
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用`manifest [T]`,它通常与`implicitly [Manifest [T]]`相同. (4认同)