當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。