有没有办法一般性地获得Scala类型的清单?例如,如果我只有一个Class引用可以使用,有没有办法可以获得相应的清单?
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)