Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.Mirrors.ReflectiveMirror

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

Зеркало, отражающее экземпляры и статические классы. См. страницу обзора для получения подробной информации о том, как использовать рефлексию во время выполнения.

Source
Mirrors.scala
Линейные супертипы
api.Mirror[Mirrors.this.type], AnyRef, Any
Известные подклассы
JavaMirror, RuntimeMirror

Абстрактные члены значения

abstract def EmptyPackage: Universe.ModuleSymbol

Символ модуля по умолчанию (безымянного) пакета

Definition Classes
Mirror

abstract def EmptyPackageClass: Universe.ClassSymbol

Символ класса модуля по умолчанию (безымянного) пакета

Definition Classes
Mirror

abstract def RootClass: Universe.ClassSymbol

Символ класса _root_ пакета

Definition Classes
Mirror

abstract def RootPackage: Universe.ModuleSymbol

Символ модуля _root_ пакета

Definition Classes
Mirror

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

Рефлексивное зеркало для данного объекта.

Такое зеркало может быть использовано для дальнейшего отражения членов объекта, чтобы получить/установить поля, вызвать методы и просмотреть внутренние классы и объекты.

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

Отражает статический символ класса и возвращает зеркало, которое может быть использовано для создания экземпляров класса, проверки его компаньон-объекта или выполнения дальнейшего отражения.

Чтобы получить символ класса по имени класса, который вы хотите отразить, используйте <this mirror>.classSymbol(<runtime class loaded by its name>).

Входной символ может быть как частным, так и нет (Scala reflection прозрачно обрабатывает видимость). Он должен быть статическим, т.е. либо верхнего уровня, либо вложенным в один или несколько статических объектов.

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

Отражает статический символ модуля и возвращает зеркало, которое может быть использовано для получения экземпляра объекта или проверки его компаньон-класса.

Чтобы получить символ модуля по имени его компаньон-класса, который вы хотите отразить, используйте <this mirror>.classSymbol(<runtime class loaded by its name>).companion.get.

Входной символ может быть как частным, так и нет (Scala reflection прозрачно обрабатывает видимость). Он должен быть статическим, т.е. либо верхнего уровня, либо вложенным в один или несколько статических объектов.

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

Символ, соответствующий глобально доступному классу с заданным полным квалифицированным именем fullName.

Если имя указывает на псевдоним типа, он рекурсивно деализируется, и возвращается его целевой тип. Если вам нужен символ, соответствующий самому псевдониму типа, загрузите его непосредственно из класса пакета:

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

Для соответствия правилам разрешения имен Scala, в случае неоднозначности между пакетом и объектом, объект никогда не рассматривается.

Например, для следующего кода:

package foo { class B }

object foo { class A class B }

staticClass("foo.B") разрешит символ, соответствующий классу B, объявленному в пакете foo, а staticClass("foo.A") выбросит ScalaReflectionException.

В приведенном выше примере для загрузки символа, соответствующего классу B, объявленному в объекте foo, используйте staticModule("foo") для загрузки символа модуля, а затем перейдите к info.members его moduleClass.

Definition Classes
Mirror

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

Символ, соответствующий глобально доступному объекту с заданным полным квалифицированным именем fullName.

Для соответствия правилам разрешения имен Scala, в случае неоднозначности между пакетом и объектом, объект никогда не рассматривается.

Например, для следующего кода:

package foo { object B }

object foo { object A object B }

staticModule("foo.B") разрешит символ, соответствующий объекту B, объявленному в пакете foo, а staticModule("foo.A") выбросит ScalaReflectionException.

В приведенном выше примере для загрузки символа, соответствующего объекту B, объявленному в объекте foo, используйте staticModule("foo") для загрузки символа модуля, а затем перейдите к info.members его moduleClass.

Definition Classes
Mirror

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

Символ, соответствующий пакету с заданным полным квалифицированным именем fullName.

Definition Classes
Mirror

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

Символ типа x, полученный из тега типа.

Определяющие классы
Mirror

abstract val universe: Mirrors.this.type

Вселенная, к которой принадлежит этот зеркало.

Определяющие классы
Mirror

Члены конкретных значений

final def !=(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

final def ##(): Int

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из Universe.ReflectiveMirror вany2stringadd[Universe.ReflectiveMirror] с помощью метода any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

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

Неявный
Этот член добавлен неявным преобразованием из Universe.ReflectiveMirror вArrowAssoc[Universe.ReflectiveMirror] с помощью метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Определяющие классы
AnyRef → Any

final def asInstanceOf[T0]: T0

Определяющие классы
Any

def clone(): AnyRef

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

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

Неявный
Этот член добавлен неявным преобразованием из Universe.ReflectiveMirror вEnsuring[Universe.ReflectiveMirror] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из Universe.ReflectiveMirror вEnsuring[Universe.ReflectiveMirror] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из Universe.ReflectiveMirror вEnsuring[Universe.ReflectiveMirror] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): Universe.ReflectiveMirror

Неявный
Этот член добавлен неявным преобразованием из Universe.ReflectiveMirror вEnsuring[Universe.ReflectiveMirror] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

final def eq(arg0: AnyRef): Boolean

Определяющие классы
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 to StringFormat[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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API