Трейт scala.reflect.api.Mirrors.RuntimeMirror
trait RuntimeMirror extends api.Mirror[Mirrors.this.type] with Universe.ReflectiveMirror
Абстрактные члены значений
abstract def EmptyPackage: Universe.ModuleSymbol
Символ модуля пакета по умолчанию (без имени)
- Определяющие классы
- Mirror
abstract def EmptyPackageClass: Universe.ClassSymbol
Символ класса модуля пакета по умолчанию (без имени)
- Определяющие классы
- Mirror
abstract def RootClass: Universe.ClassSymbol
Символ класса пакета _root_
- Определяющие классы
- Mirror
abstract def RootPackage: Universe.ModuleSymbol
Символ модуля пакета _root_
- Определяющие классы
- Mirror
abstract def classSymbol(rtcls: Universe.RuntimeClass): Universe.ClassSymbol
Символ класса для указанного класса времени выполнения.
- возвращает
Символ класса для класса времени выполнения в текущем загрузчике классов.
- Выбрасываемые исключения
-
java.lang.ClassNotFoundExceptionесли класс с таким именем не существуетscala.reflect.ScalaReflectionExceptionесли соответствующий символ не существует: что еще может быть выброшено?
abstract def moduleSymbol(rtcls: Universe.RuntimeClass): Universe.ModuleSymbol
Символ модуля для указанного класса времени выполнения.
- возвращает
Символ модуля для класса времени выполнения в текущем загрузчике классов.
- Выбрасываемые исключения
-
java.lang.ClassNotFoundExceptionесли класс с таким именем не существуетscala.reflect.ScalaReflectionExceptionесли соответствующий символ не существует: что еще может быть выброшено?
abstract def reflect[T](obj: T)(implicit arg0: ClassTag[T]): Universe.InstanceMirror
Зеркало для рефлексии заданного объекта.
Такое зеркало может быть использовано для дальнейшей рефлексии над членами объекта для получения/установки полей, вызова методов и проверки внутренних классов и объектов.
- Определяющие классы
- ReflectiveMirror
abstract def reflectClass(cls: Universe.ClassSymbol): Universe.ClassMirror
Выполняет рефлексию над статическим символом класса и возвращает зеркало, которое может быть использовано для создания экземпляров класса, проверки его объекта-компаньона или выполнения дальнейшей рефлексии.
Для получения символа класса по имени класса, над которым вы хотите выполнить рефлексию, используйте <this mirror>.classSymbol(<runtime class loaded by its name>).
Входной символ может быть как приватным, так и не приватным (рефлексия Scala прозрачно обрабатывает видимость). Он должен быть статическим, т.е. либо верхнего уровня, либо вложенным в один или несколько статических объектов.
- Определяющие классы
- ReflectiveMirror
abstract def reflectModule(mod: Universe.ModuleSymbol): Universe.ModuleMirror
Выполняет рефлексию над статическим символом модуля и возвращает зеркало, которое может быть использовано для получения экземпляра объекта или проверки его класса-компаньона.
Для получения символа модуля по имени его класса-компаньона, над которым вы хотите выполнить рефлексию, используйте <this mirror>.classSymbol(<runtime class loaded by its name>).companion.get.
Входной символ может быть как приватным, так и не приватным (рефлексия Scala прозрачно обрабатывает видимость). Он должен быть статическим, т.е. либо верхнего уровня, либо вложенным в один или несколько статических объектов.
- Определяющие классы
- ReflectiveMirror
abstract def runtimeClass(cls: Universe.ClassSymbol): Universe.RuntimeClass
Сопоставляет символ класса Scala соответствующему объекту класса Java
- Выбрасываемые исключения
ClassNotFoundExceptionесли нет класса Java, соответствующего данному символу класса Scala. Примечание: если символ Scala — это ArrayClass, выбрасывается исключение ClassNotFound, поскольку нет уникального класса Java, соответствующего универсальному массиву Scala
abstract def runtimeClass(tpe: Universe.Type): Universe.RuntimeClass
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, полученный из тега типа.
- Definition Classes
- Mirror
abstract val universe: Mirrors.this.type
Вселенная, к которой принадлежит этот зеркало.
- Definition Classes
- Mirror
Члены конкретных значений
final def !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def ##(): Int
- Определяющие классы
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вany2stringadd[Universe.RuntimeMirror] выполненное методом any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (Universe.RuntimeMirror, B)
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вArrowAssoc[Universe.RuntimeMirror] выполненное методом 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.RuntimeMirror) => Boolean, msg: => Any): Universe.RuntimeMirror
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вEnsuring[Universe.RuntimeMirror] выполненное методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (Universe.RuntimeMirror) => Boolean): Universe.RuntimeMirror
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вEnsuring[Universe.RuntimeMirror] выполненное методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean, msg: => Any): Universe.RuntimeMirror
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вEnsuring[Universe.RuntimeMirror] выполненное методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean): Universe.RuntimeMirror
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вEnsuring[Universe.RuntimeMirror] выполненное методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
final метод eq(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef
метод equals(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef → Any
метод finalize(): Unit
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.Throwable])
метод formatted(fmtstr: String): String
- Неявный
- Этот член добавлен неявным преобразованием из Universe.RuntimeMirror вStringFormat[Universe.RuntimeMirror] с помощью метода StringFormat в scala.Predef.
- Определяющие классы
- StringFormat
- Аннотации
- @inline()
final метод getClass(): Class[_ <: AnyRef]
- Определяющие классы
- AnyRef → Any
- Аннотации
- @native()
метод hashCode(): Int
- Определяющие классы
- AnyRef → Any
- Аннотации
- @native()
final метод isInstanceOf[T0]: Boolean
- Определяющие классы
- Any
final метод ne(arg0: AnyRef): Boolean
- Определяющие классы
- AnyRef
final метод notify(): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @native()
final метод notifyAll(): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @native()
final метод synchronized[T0](arg0: => T0): T0
- Определяющие классы
- AnyRef
метод toString(): String
- Определяющие классы
- AnyRef → Any
метод typeOf[T](неявный arg0: Universe.TypeTag[T]): Universe.Type
Сокращение для implicitly[TypeTag[T]].tpe
- Определяющие классы
- Mirror
final метод wait(): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final метод wait(arg0: Long, arg1: Int): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final метод wait(arg0: Long): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException]) @native()
метод weakTypeOf[T](неявный arg0: Universe.WeakTypeTag[T]): Universe.Type
Сокращение для implicitly[WeakTypeTag[T]].tpe
- Определяющие классы
- 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$RuntimeMirror.html
API зеркала для рефлексивного универсума. Подробности о том, как использовать рефлексию во время выполнения, см. на странице обзора.