W3cubDocs

/Scala 2.13 Reflection

Trait scala.reflect.api.Mirrors.ReflectiveMirror

trait ReflectiveMirror extends api.Mirror[Mirrors.this.type]

A mirror that reflects instances and static classes. See the overview page for details on how to use runtime reflection.

Source
Mirrors.scala
Linear Supertypes
api.Mirror[Mirrors.this.type], AnyRef, Any
Known Subclasses
JavaMirror, RuntimeMirror

Abstract Value Members

abstract def EmptyPackage: Universe.ModuleSymbol

The module symbol of the default (unnamed) package

Definition Classes
Mirror

abstract def EmptyPackageClass: Universe.ClassSymbol

The module class symbol of the default (unnamed) package

Definition Classes
Mirror

abstract def RootClass: Universe.ClassSymbol

The class symbol of the _root_ package

Definition Classes
Mirror

abstract def RootPackage: Universe.ModuleSymbol

The module symbol of the _root_ package

Definition Classes
Mirror

abstract def reflect[T](obj: T)(implicit arg0: ClassTag[T]): Universe.InstanceMirror

A reflective mirror for the given object.

Such a mirror can be used to further reflect against the members of the object to get/set fields, invoke methods and inspect inner classes and objects.

abstract def reflectClass(cls: Universe.ClassSymbol): Universe.ClassMirror

Reflects against a static class symbol and returns a mirror that can be used to create instances of the class, inspect its companion object or perform further reflections.

To get a class symbol by the name of the class you would like to reflect, use <this mirror>.classSymbol(<runtime class loaded by its name>).

The input symbol can be either private or non-private (Scala reflection transparently deals with visibility). It must be static, i.e. either top-level or nested within one or several static objects.

abstract def reflectModule(mod: Universe.ModuleSymbol): Universe.ModuleMirror

Reflects against a static module symbol and returns a mirror that can be used to get the instance of the object or inspect its companion class.

To get a module symbol by the name of its companion class you would like to reflect, use <this mirror>.classSymbol(<runtime class loaded by its name>).companion.get.

The input symbol can be either private or non-private (Scala reflection transparently deals with visibility). It must be static, i.e. either top-level or nested within one or several static objects.

abstract def staticClass(fullName: String): Universe.ClassSymbol

The symbol corresponding to the globally accessible class with the given fully qualified name fullName.

If the name points to a type alias, it's recursively dealiased and its target is returned. If you need a symbol that corresponds to the type alias itself, load it directly from the package class:

scala> cm.staticClass("scala.List") res0: scala.reflect.runtime.universe.ClassSymbol = class List

scala> res0.fullName res1: String = scala.collection.immutable.List

scala> cm.staticPackage("scala") res2: scala.reflect.runtime.universe.ModuleSymbol = package scala

scala> res2.moduleClass.info member TypeName("List") res3: scala.reflect.runtime.universe.Symbol = type List

scala> res3.fullName res4: String = scala.List

To be consistent with Scala name resolution rules, in case of ambiguity between a package and an object, the object is never been considered.

For example for the following code:

package foo { class B }

object foo { class A class B }

staticClass("foo.B") will resolve to the symbol corresponding to the class B declared in the package foo, and staticClass("foo.A") will throw a ScalaReflectionException.

In the example above, to load a symbol that corresponds to the class B declared in the object foo, use staticModule("foo") to load the module symbol and then navigate info.members of its moduleClass.

Definition Classes
Mirror

abstract def staticModule(fullName: String): Universe.ModuleSymbol

The symbol corresponding to the globally accessible object with the given fully qualified name fullName.

To be consistent with Scala name resolution rules, in case of ambiguity between a package and an object, the object is never been considered.

For example for the following code:

package foo { object B }

object foo { object A object B }

staticModule("foo.B") will resolve to the symbol corresponding to the object B declared in the package foo, and staticModule("foo.A") will throw a ScalaReflectionException

In the example above, to load a symbol that corresponds to the object B declared in the object foo, use staticModule("foo") to load the module symbol and then navigate info.members of its moduleClass.

Definition Classes
Mirror

abstract def staticPackage(fullName: String): Universe.ModuleSymbol

The symbol corresponding to a package with the given fully qualified name fullName.

Definition Classes
Mirror

abstract def symbolOf[T](implicit arg0: Universe.WeakTypeTag[T]): Universe.TypeSymbol

Type symbol of x as derived from a type tag.

Definition Classes
Mirror

abstract val universe: Mirrors.this.type

The universe this mirror belongs to.

Definition Classes
Mirror

Concrete Value Members

final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def ##(): Int

Definition Classes
AnyRef → Any

def +(other: String): String

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toany2stringadd[Universe.ReflectiveMirror] performed by method any2stringadd in scala.Predef.
Definition Classes
any2stringadd

def ->[B](y: B): (Universe.ReflectiveMirror, B)

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toArrowAssoc[Universe.ReflectiveMirror] performed by method ArrowAssoc in scala.Predef.
Definition Classes
ArrowAssoc
Annotations
@inline()

final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def asInstanceOf[T0]: T0

Definition Classes
Any

def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

def ensuring(cond: (Universe.ReflectiveMirror) => Boolean, msg: => Any): Universe.ReflectiveMirror

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toEnsuring[Universe.ReflectiveMirror] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: (Universe.ReflectiveMirror) => Boolean): Universe.ReflectiveMirror

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toEnsuring[Universe.ReflectiveMirror] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean, msg: => Any): Universe.ReflectiveMirror

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toEnsuring[Universe.ReflectiveMirror] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean): Universe.ReflectiveMirror

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toEnsuring[Universe.ReflectiveMirror] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef

def equals(arg0: AnyRef): Boolean

Definition Classes
AnyRef → Any

def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.Throwable])

def formatted(fmtstr: String): String

Implicit
This member is added by an implicit conversion from Universe.ReflectiveMirror toStringFormat[Universe.ReflectiveMirror] performed by method StringFormat in scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_ <: AnyRef]

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Boolean

Definition Classes
Any

final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef

final def notify(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def notifyAll(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

def typeOf[T](implicit arg0: Universe.TypeTag[T]): Universe.Type

Shortcut for implicitly[TypeTag[T]].tpe

Definition Classes
Mirror

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()

def weakTypeOf[T](implicit arg0: Universe.WeakTypeTag[T]): Universe.Type

Shortcut for implicitly[WeakTypeTag[T]].tpe

Definition Classes
Mirror

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/Mirrors$ReflectiveMirror.html