Трейт scala.reflect.api.JavaUniverse.JavaMirror
trait JavaMirror extends api.Mirror[JavaUniverse.this.type] with RuntimeMirror
Члены значения абстракции
абстрактный 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
Уточнение scala.reflect.api.Mirror для рефлексии во время выполнения с использованием загрузчиков классов JVM.
С этим улучшением зеркала получают возможность преобразовывать артефакты рефлексии Scala (символы и типы) в артефакты рефлексии Java (классы) и наоборот. В результате, уточнённые зеркала становятся способными выполнять рефлексивные вызовы (получение/установка значений полей, вызов методов и т. д.).
Для получения дополнительной информации о
Mirrorss, см. scala.reflect.api.Mirrors или Руководство по рефлексии: Зеркала