Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.JavaUniverse.JavaMirror

trait JavaMirror extends api.Mirror[JavaUniverse.this.type] with RuntimeMirror

Уточнение scala.reflect.api.Mirror для рефлексии во время выполнения с использованием загрузчиков классов JVM.

С этим улучшением зеркала получают возможность преобразовывать артефакты рефлексии Scala (символы и типы) в артефакты рефлексии Java (классы) и наоборот. В результате, уточнённые зеркала становятся способными выполнять рефлексивные вызовы (получение/установка значений полей, вызов методов и т. д.).

Для получения дополнительной информации о Mirrorss, см. scala.reflect.api.Mirrors или Руководство по рефлексии: Зеркала

Source
JavaUniverse.scala
Линейные супертипы
JavaUniverse.RuntimeMirror, JavaUniverse.ReflectiveMirror, api.Mirror[JavaUniverse.this.type], AnyRef, Any

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

абстрактный def EmptyPackage: JavaUniverse.ModuleSymbol

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

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

абстрактный def EmptyPackageClass: JavaUniverse.ClassSymbol

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

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

абстрактный def RootClass: JavaUniverse.ClassSymbol

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

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

абстрактный def RootPackage: JavaUniverse.ModuleSymbol

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

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

абстрактный val classLoader: ClassLoader

абстрактный def classSymbol(rtcls: RuntimeClass): JavaUniverse.ClassSymbol

Символ класса для указанного исполняемого класса.

возвращает

Символ класса для исполняемого класса в текущем загрузчике классов.

Определяющие классы
RuntimeMirror
Исключения

java.lang.ClassNotFoundException если класс с таким именем не существует

scala.reflect.ScalaReflectionException если соответствующий символ не существует, чтобы сделать: бросает что-нибудь ещё?

абстрактный def moduleSymbol(rtcls: RuntimeClass): JavaUniverse.ModuleSymbol

Символ модуля для указанного исполняемого класса.

возвращает

Символ модуля для исполняемого класса в текущем загрузчике классов.

Определяющие классы
RuntimeMirror
Исключения

java.lang.ClassNotFoundException если класс с таким именем не существует

scala.reflect.ScalaReflectionException если соответствующий символ не существует, чтобы сделать: бросает что-нибудь ещё?

абстрактный def reflect[T](obj: T)(неявный arg0: ClassTag[T]): JavaUniverse.InstanceMirror

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

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

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

абстрактный def reflectClass(cls: JavaUniverse.ClassSymbol): JavaUniverse.ClassMirror

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

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

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

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

абстрактный def reflectModule(mod: JavaUniverse.ModuleSymbol): JavaUniverse.ModuleMirror

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

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

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

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

абстрактный def runtimeClass(cls: JavaUniverse.ClassSymbol): RuntimeClass

Преобразование символа Scala-класса в соответствующий объект Java-класса

Определяющие классы
RuntimeMirror
Исключения

ClassNotFoundException если нет Java-класса, соответствующего данному символу Scala-класса. Примечание: если Scala-символ — ArrayClass, выбрасывается исключение ClassNotFound, так как нет уникального Java-класса, соответствующего Scala-обобщенному массиву

абстрактный метод runtimeClass(tpe: JavaUniverse.Type): RuntimeClass

Преобразует тип Scala в соответствующий объект класса Java

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

абстрактный метод staticClass(fullName: String): JavaUniverse.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.

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

абстрактный метод staticModule(fullName: String): JavaUniverse.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.

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

абстрактный метод staticPackage(fullName: String): JavaUniverse.ModuleSymbol

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

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

абстрактный метод symbolOf[T](неявный arg0: JavaUniverse.WeakTypeTag[T]): JavaUniverse.TypeSymbol

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

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

абстрактный значение universe: JavaUniverse.this.type

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

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

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

final def !=(arg0: Any): Boolean

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

final def ##(): Int

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

def +(other: String): String

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

def ->[B](y: B): (JavaMirror, B)

Неявный
Этот член добавлен благодаря неявной конвертации из JavaMirror вArrowAssoc[JavaMirror] с помощью метода 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: (JavaMirror) => Boolean, msg: => Any): JavaMirror

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

def ensuring(cond: (JavaMirror) => Boolean): JavaMirror

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

def ensuring(cond: Boolean, msg: => Any): JavaMirror

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

def ensuring(cond: Boolean): JavaMirror

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

final def eq(arg0: AnyRef): Boolean

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

def equals(arg0: AnyRef): Boolean

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

def finalize(): Unit

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

def formatted(fmtstr: String): String

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

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

Определяющие классы
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Определяющие классы
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

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

final def ne(arg0: AnyRef): Boolean

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

final def notify(): Unit

Определяющие классы
AnyRef
Аннотации
@native()

final def notifyAll(): Unit

Определяющие классы
AnyRef
Аннотации
@native()

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

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

def toString(): String

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

def typeOf[T](неявный arg0: JavaUniverse.TypeTag[T]): JavaUniverse.Type

Сокращение для implicitly[TypeTag[T]].tpe

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

final def wait(): Unit

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

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

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

final def wait(arg0: Long): Unit

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

def weakTypeOf[T](неявный arg0: JavaUniverse.WeakTypeTag[T]): JavaUniverse.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/JavaUniverse$JavaMirror.html

Spec-Zone.ru

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