当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala reflect.Manifest用法及代码示例


@nowarn ("cat=deprecation&origin;=scala\\.reflect\\.ClassManifest(DeprecatedApis.*)?") @implicitNotFound (msg = "No Manifest available for ${T}.")

用法 一

trait Manifest[T] extends ClassTag[T] with Equals

Manifest[T] 是类型 T 的不透明说明符.它支持的用途是将类型的擦除作为Class 实例提供访问权限,如果该类在编译时未知,则这是创建本机Arrays 所必需的。

type-relation 运算符 <:<=:= 应仅视为近似值,因为类型一致性的许多方面尚未在清单中充分表示。

示例用法:

def arr[T] = new Array[T](0)                          // does not compile
def arr[T](implicit m: Manifest[T]) = new Array[T](0) // compiles
def arr[T: Manifest] = new Array[T](0)                // shorthand for the preceding

// Methods manifest and optManifest are in [[scala.Predef]].
def isApproxSubType[T: Manifest, U: Manifest] = manifest[T] <:< manifest[U]
isApproxSubType[List[String], List[AnyRef]] // true
isApproxSubType[List[String], List[Int]]    // false

def methods[T: Manifest] = manifest[T].runtimeClass.getMethods
def retType[T: Manifest](name: String) =
  methods[T] find (_.getName == name) map (_.getGenericReturnType)

retType[Map[_, _]]("values")  // Some(scala.collection.Iterable<B>)

伴生:

object

源码:

Manifest.scala

用法 二

object Manifest

对象Manifest 定义了清单的工厂方法.它旨在供编译器使用,不应在客户端代码中使用。

伴生:

class

源码:

Manifest.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 reflect.Manifest。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。