Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.Annotations

Трейт Annotations extends AnyRef

ЭКСПЕРИМЕНТАЛЬНО

Этот трейт предоставляет поддержку аннотаций для API рефлексии.

В Scala аннотации относятся к одной из двух категорий:

  • Аннотации Java: аннотации на определениях, созданных компилятором Java, т.е. подтипы java.lang.annotation.Annotation, прикреплённые к определениям программы.
  • Аннотации Scala: аннотации на определениях или типах, созданных компилятором Scala.

При компиляции аннотации Scala, наследующей от scala.annotation.StaticAnnotation, она хранится как специальные атрибуты в соответствующем файле класса, а не как аннотация Java. Обратите внимание, что наследования только от scala.annotation.Annotation недостаточно для сохранения соответствующих метаданных для рефлексии во время выполнения.

Как аннотации Java, так и аннотации Scala представлены в виде типизированных деревьев, содержащих вызовы конструкторов, соответствующих аннотации. Например, аннотация в @ann(1, 2) class C представлена как q"@new ann(1, 2)".

В отличие от рефлексии Java, рефлексия Scala не поддерживает оценку вызовов конструкторов, хранящихся в аннотациях, в базовые объекты. Например, невозможно перейти от @ann(1, 2) class C к ann(1, 2), поэтому необходимо анализировать деревья, представляющие аргументы аннотации, чтобы вручную извлечь соответствующие значения. Для этой цели аргументы аннотации можно получить с помощью annotation.tree.children.tail.

Для получения дополнительной информации об Annotation см. Руководство по рефлексии: аннотации, имена, области видимости и многое другое

Тип объекта
Universe
Источник
Annotations.scala
Линейные супертипы
AnyRef, Any
Известные подклассы
JavaUniverse, Universe, Universe

Типовые члены

абстрактный тип Annotation >: Null <: Universe.AnnotationApi

ТрейтAnnotationApi extends AnyRef

API экземпляров Annotation. Основным источником информации об аннотациях является страница scala.reflect.api.Annotations.

абстрактный классAnnotationExtractor extends AnyRef

Класс-экстрактор для создания и сопоставления с образцом с синтаксисом Annotation(tpe, scalaArgs, javaArgs). Здесь tpe - тип аннотации, scalaArgs - полезная нагрузка аннотаций Scala, и javaArgs - полезная нагрузка аннотаций Java.

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

абстрактный val Annotation: Universe.AnnotationExtractor

абстрактный def annotationToTree(ann: Universe.Annotation): Universe.Tree

Атрибуты
protected[scala]

абстрактный def treeToAnnotation(tree: Universe.Tree): Universe.Annotation

Атрибуты
protected[scala]

Члены-значения

final def !=(arg0: Any): Boolean

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

final def ##(): Int

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

def +(other: String): String

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

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

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

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

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

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

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

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

def ensuring(cond: Boolean): Annotations

Неявный
Этот член добавлен неявным преобразованием из Annotations вEnsuring[Annotations] с помощью метода 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

Неявный
Этот член добавлен неявным преобразованием из Annotations в StringFormat[Annotations] , выполненное методом 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

Классы определений
AnyRef → Any

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()

© 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/Annotations.html

Spec-Zone.ru

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