Manifest

@nowarn("cat=deprecation&origin=scala\\.reflect\\.ClassManifest(DeprecatedApis.*)?") @implicitNotFound(msg = "No Manifest available for ${T}.")
trait Manifest[T] extends ClassTag[T] with Equals

A Manifest[T] is an opaque descriptor for type T. Its supported use is to give access to the erasure of the type as a Class instance, as is necessary for the creation of native Arrays if the class is not known at compile time.

The type-relation operators <:< and =:= should be considered approximations only, as there are numerous aspects of type conformance which are not yet adequately represented in manifests.

Example usages:

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>)
Companion:
object
Source:
Manifest.scala

Value members

Concrete methods

override def canEqual(that: Any): Boolean
override def equals(that: Any): Boolean

Note: testing for erasure here is important, as it is many times faster than <:< and rules out most comparisons.

Note: testing for erasure here is important, as it is many times faster than <:< and rules out most comparisons.

Definition Classes
Source:
Manifest.scala
override def hashCode: Int
Definition Classes
Source:
Manifest.scala
override def typeArguments: List[Manifest[_]]

Inherited methods

def newArray(len: Int): Array[T]

Produces a new array with element type T and length len

Produces a new array with element type T and length len

Inherited from:
ClassTag
Source:
ClassTag.scala

A class representing the type U to which T would be erased.

A class representing the type U to which T would be erased. Note that there is no subtyping relationship between T and U.

Inherited from:
ClassTag
Source:
ClassTag.scala
override def toString: String
Definition Classes
Inherited from:
ClassTag
Source:
ClassTag.scala
def unapply(x: Any): Option[T]

A ClassTag[T] can serve as an extractor that matches only objects of type T.

A ClassTag[T] can serve as an extractor that matches only objects of type T.

The compiler tries to turn unchecked type tests in pattern matches into checked ones by wrapping a (_: T) type pattern as ct(_: T), where ct is the ClassTag[T] instance. Type tests necessary before calling other extractors are treated similarly. SomeExtractor(...) is turned into ct(SomeExtractor(...)) if T in SomeExtractor.unapply(x: T) is uncheckable, but we have an instance of ClassTag[T].

Inherited from:
ClassTag
Source:
ClassTag.scala

Produces a ClassTag that knows how to instantiate an Array[Array[T]]

Produces a ClassTag that knows how to instantiate an Array[Array[T]]

Inherited from:
ClassTag
Source:
ClassTag.scala

Deprecated and Inherited methods

@deprecated("use scala.reflect.runtime.universe.TypeTag for subtype checking instead", "2.10.0")
def <:<(that: ClassTag[_]): Boolean

Tests whether the type represented by this manifest is a subtype of the type represented by that manifest, subject to the limitations described in the header.

Tests whether the type represented by this manifest is a subtype of the type represented by that manifest, subject to the limitations described in the header.

Deprecated
Inherited from:
ClassManifestDeprecatedApis
Source:
ClassManifestDeprecatedApis.scala
@deprecated("use scala.reflect.runtime.universe.TypeTag for subtype checking instead", "2.10.0")
def >:>(that: ClassTag[_]): Boolean

Tests whether the type represented by this manifest is a supertype of the type represented by that manifest, subject to the limitations described in the header.

Tests whether the type represented by this manifest is a supertype of the type represented by that manifest, subject to the limitations described in the header.

Deprecated
Inherited from:
ClassManifestDeprecatedApis
Source:
ClassManifestDeprecatedApis.scala
@deprecated("use runtimeClass instead", "2.10.0")
def erasure: Class[_]
@deprecated("use wrap.newArray instead", "2.10.0")
def newArray2(len: Int): Array[Array[T]]
@deprecated("use wrap.wrap.newArray instead", "2.10.0")
def newArray3(len: Int): Array[Array[Array[T]]]
@deprecated("use wrap.wrap.wrap.newArray instead", "2.10.0")
@deprecated("use wrap.wrap.wrap.wrap.newArray instead", "2.10.0")
@deprecated("use ArrayBuilder.make(this) instead", "2.10.0")
@deprecated("create WrappedArray directly instead", "2.10.0")