Spec-Zone.ru › Scala 2.13 Reflection

Трейт scala.reflect.api.Symbols.SymbolApi

trait SymbolApi extends AnyRef

API символов. Основным источником информации о символах является страница Symbols.

Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.

Self Type
Universe.Symbol
Source
Symbols.scala
Линейные супертипы
AnyRef, Any
Известные подклассы
FreeTermSymbol, FreeTermSymbolApi, FreeTypeSymbol, FreeTypeSymbolApi, ClassSymbol, ClassSymbolApi, MethodSymbol, MethodSymbolApi, ModuleSymbol, ModuleSymbolApi, Symbol, TermSymbol, TermSymbolApi, TypeSymbol, TypeSymbolApi

Типы-члены

abstract type NameType >: Null <: Universe.Name

Тип имени символа. Может быть TermName или TypeName в зависимости от того, является ли это TermSymbol или TypeSymbol.

Пространства имён для имен типов не пересекаются с пространствами имён для имён терминов. Этот факт отражён в разных типах для имён TermSymbol и TypeSymbol.

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

абстрактный def alternatives: Список[СимволUniverse]

абстрактный def annotations: Список[АннотацияUniverse]

абстрактный def companion: СимволUniverse

Для класса: его объект-компаньон, если он существует. Для модуля или модульного класса: класс-компаньон модуля, если он существует. Для пакета или класса пакета: NoSymbol. Для всех остальных: NoSymbol.

абстрактный def filter(cond: (СимволUniverse) => Boolean): СимволUniverse

Фильтрует базовые альтернативы (или список из одного элемента, состоящий из самого символа, если символ не перегружен). Возвращает перегруженный символ, если есть несколько совпадений. Возвращает NoSymbol, если совпадений нет.

абстрактный def fullName: Строка

абстрактный def info: ТипUniverse

Подпись типа этого символа.

Этот метод всегда возвращает подписи максимально обобщенным способом, даже если базовый символ получен из экземпляра обобщенного типа. Например, подпись метода def map[B](f: (A) => B): List[B], который ссылается на параметр типа A класса-декларанта List[A], всегда будет содержать A, независимо от того, загружен ли map из List[_] или из List[Int]. Чтобы получить подпись с соответствующими параметрами типа, следует использовать infoIn.

абстрактный def infoIn(site: ТипUniverse): ТипUniverse

абстрактный def isAbstract: Булево

Является ли этот символ абстрактным (т.е. абстрактный класс, абстрактный метод, значение или член типа)?

абстрактный def isAbstractOverride: Булево

абстрактный def isConstructor: Булево

Представляет ли этот метод конструктор?

Если owner является классом, то это конструктор JVM по умолчанию. Если owner является траитом, то это конструктор миксина.

абстрактный def isFinal: Булево

абстрактный def isImplementationArtifact: Булево

абстрактный def isImplicit: Булево

абстрактный def isJava: Булево

абстрактный def isJavaAnnotation: Булево

абстрактный def isJavaEnum: Булево

абстрактный def isMacro: Булево

абстрактный def isPackage: Булево

абстрактный def isPackageClass: Булево

абстрактный def isParameter: Булево

абстрактный def isPrivate: Булево

абстрактный def isPrivateThis: Булево

абстрактный def isProtected: Булево

абстрактный def isProtectedThis: Булево

абстрактный def isPublic: Булево

абстрактный def isSpecialized: Булево

абстрактный def isStatic: Булево

Является ли этот символ статическим (т.е. без внешнего экземпляра)? В: Когда именно сим маркируется как STATIC? О: Если это член верхнего уровня объекта, или объекта, содержащегося в объекте верхнего уровня, или на любом количестве уровней вглубь. http://groups.google.com/group/scala-internals/browse_thread/thread/d385bcd60b08faf6

абстрактный def isSynthetic: Булево

Представляет ли этот символ синтетическое (т.е. сгенерированное компилятором) сущность? Примеры синтетических сущностей — аксессоры для значений и переменных.

абстрактный def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol

абстрактный def name: Symbol.NameType

абстрактный def orElse(alt: => Universe.Symbol): Universe.Symbol

абстрактный def overrides: List[Universe.Symbol]

абстрактный def owner: Universe.Symbol

Владелец этого символа. Это символ, который непосредственно содержит определение текущего символа. Символ NoSymbol не имеет владельца, и вызов этого метода для него приводит к внутренней ошибке. Владелец корневого класса Scala scala.reflect.api.Mirror.RootClass и корневого объекта Scala scala.reflect.api.Mirror.RootPackage — это NoSymbol. У всех остальных символов есть цепочка владельцев, которая заканчивается scala.reflect.api.Mirror.RootClass.

абстрактный def pos: Universe.Position

абстрактный def privateWithin: Universe.Symbol

Устанавливается, когда символ имеет модификатор в формате private[X] или protected[X], в противном случае NoSymbol.

Кодирование уровня доступа: есть три флага Scala (PRIVATE, PROTECTED и LOCAL), которые комбинируются со значением privateWithin («foo» в private[foo]), чтобы определить, откуда можно получить доступ к сущности. Значения следующие:

PRIVATE доступ ограничен только классом. PROTECTED доступ ограничен только классом и его подклассами. LOCAL может быть установлен только в сочетании с PRIVATE или PROTECTED. Дальше ограничивает доступ к тому же экземпляру объекта.

Кроме того, privateWithin может использоваться для установки барьера видимости. При установке все содержимое указанного вложенного пакета или класса имеет доступ. Он несовместим с PRIVATE или LOCAL, но является аддитивным к PROTECTED (т.е. если доступ разрешён либо флагами, либо privateWithin, то он разрешён).

Java уровни доступа переводятся следующим образом:

java private: isPrivate && (privateWithin == NoSymbol) java package: !isPrivate && !isProtected && (privateWithin == enclosingPackage) java protected: isProtected && (privateWithin == enclosingPackage) java public: !isPrivate && !isProtected && (privateWithin == NoSymbol)

абстрактный def suchThat(cond: (Universe.Symbol) => Boolean): Universe.Symbol

абстрактный def typeSignature: Universe.Type

См. также

info

абстрактный def typeSignatureIn(site: Universe.Type): Universe.Type

См. также

infoIn

абстрактный def allOverriddenSymbols: List[Universe.Symbol]

Аннотации
@deprecated
Устаревшее

(Начиная с версии 2.11.0) используйте overrides вместо

См. также

overrides

абстрактный def associatedFile: AbstractFile

Файл исходного кода, если этот символ создан во время этой компиляции, или файл класса, если этот символ загружен из *.class или *.jar.

Возвращаемый тип — scala.reflect.io.AbstractFile, который принадлежит экспериментальной части Scala Reflection. Не следует использовать, если вы не знаете, что делаете. В последующих релизах этот API будет уточнён и доступен как часть scala.reflect.api.

Аннотации
@deprecated
Устаревшее

(Начиная с версии 2.11.0) используйте pos.source.file вместо

абстрактный def companionSymbol: Universe.Symbol

Для класса: модуль или фабрика case class с тем же именем в том же пакете. Для модуля: класс с тем же именем в том же пакете. Для всех остальных: NoSymbol.

Этот API может возвращать неожиданные результаты для модульных классов, пакетов и пакетированных классов. Используйте companion вместо, чтобы получить предсказуемые результаты.

Аннотации
@deprecated
Устаревшее

(Начиная с версии 2.11.0) используйте companion вместо, но будьте внимательны к возможным изменениям в поведении

Члены-значения конкретного типа

final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def ##(): Int

Definition Classes
AnyRef → Any

def +(other: String): String

Implicit
Этот член добавлен неявным преобразованием из Universe.SymbolApi вany2stringadd[Universe.SymbolApi] с помощью метода any2stringadd в scala.Predef.
Definition Classes
any2stringadd

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

Implicit
Этот член добавлен неявным преобразованием из Universe.SymbolApi вArrowAssoc[Universe.SymbolApi] с помощью метода ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc
Annotations
@inline()

final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any

def asClass: Universe.ClassSymbol

Этот символ преобразуется в ClassSymbol, представляющий класс или трайт.

Исключения

ScalaReflectionException, если isClass ложно.

final def asInstanceOf[T0]: T0

Definition Classes
Any

def asMethod: Universe.MethodSymbol

Этот символ преобразуется в MethodSymbol.

Исключения

ScalaReflectionException, если isMethod ложно.

def asModule: Universe.ModuleSymbol

Этот символ преобразуется в ModuleSymbol, определённый с помощью определения объекта.

Исключения

ScalaReflectionException, если isModule ложно.

def asTerm: Universe.TermSymbol

Этот символ преобразуется в TermSymbol.

Исключения

ScalaReflectionException, если isTerm ложно.

def asType: Universe.TypeSymbol

Этот символ преобразуется в TypeSymbol.

Исключения

ScalaReflectionException, если isType ложно.

def clone(): AnyRef

Атрибуты
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

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

Implicit
Этот член добавлен неявным преобразованием из Universe.SymbolApi вEnsuring[Universe.SymbolApi] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Implicit
Этот член добавлен неявным преобразованием из Universe.SymbolApi вEnsuring[Universe.SymbolApi] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из Universe.SymbolApi в Ensuring[Universe.SymbolApi] выполняемым методом Ensuring в scala.Predef.
Классы определений
Ensuring

def ensuring(cond: Boolean): Universe.SymbolApi

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

Неявный
Этот член добавлен неявным преобразованием из Universe.SymbolApi в StringFormat[Universe.SymbolApi] выполняемым методом StringFormat в scala.Predef.
Классы определений
StringFormat
Аннотации
@inline()

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

Классы определений
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Классы определений
AnyRef → Any
Аннотации
@native()

def isClass: Boolean

final def isInstanceOf[T0]: Boolean

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

def isMethod: Boolean

def isModule: Boolean

Представляет ли этот символ определение модуля (т.е. получен из определения объекта)? Если да, то isTerm также гарантированно true.

def isModuleClass: Boolean

def isOverloadedMethod: Boolean

Используется для предоставления более информативного сообщения об ошибке для asMethod.

Атрибуты
protected

def isTerm: Boolean

Представляет ли этот символ определение термина? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (кроме NoSymbol), либо sym.isTerm true, либо sym.isType true.

def isType: Boolean

Представляет ли этот символ определение типа? Обратите внимание, что каждый символ является либо термином, либо типом. Таким образом, для каждого символа sym (кроме NoSymbol), либо sym.isTerm true, либо sym.isType true.

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/Symbols$SymbolApi.html

Spec-Zone.ru

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