运维开发网

通常获取Scala类型的清单

运维开发网 https://www.qedev.com 2020-07-30 15:53 出处:网络 作者:运维开发网整理
有没有办法一般性地获得 Scala类型的清单?例如,如果我只有一个Class引用可以使用,有没有办法可以获得相应的清单? Scala的内置隐式[T]将为您提供类型为T的隐式值(如果存在).所以隐式[Manifest [T]]将返回类型T的清单. 如果你有一个Class引用,你可以像这样获得Class的Manifest: def manifestFor[T: Manifest](c: Class[T
有没有办法一般性地获得 Scala类型的清单?例如,如果我只有一个Class引用可以使用,有没有办法可以获得相应的清单? Scala的内置隐式[T]将为您提供类型为T的隐式值(如果存在).所以隐式[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

Manifest的类型是_<:Foo而不仅仅是Foo,但它们是相同的.

implicitly[Manifest[Foo]] == manifestFor(x.getClass)
//Boolean = true
0

精彩评论

暂无评论...
验证码 换一张
取 消