Spec-Zone.ru › Scala 2.13 Reflection

Аннотация scala.reflect.api.Symbols.Symbol

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

Тип символов, представляющих объявления.

Источник
Symbols.scala
Линейные супертипы
Universe.SymbolApi, AnyRef, Any
Известные подклассы
FreeTermSymbol, FreeTypeSymbol, ClassSymbol, MethodSymbol, ModuleSymbol, TermSymbol, TypeSymbol

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

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

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

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

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

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

abstract def alternatives: List[Universe.Symbol]

Перегруженные альтернативы этого символа.

Классы определения
SymbolApi

abstract def annotations: List[Universe.Annotation]

Список аннотаций, прикрепленных к этому символу.

Классы определения
SymbolApi

abstract def companion: Universe.Symbol

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

Классы определения
SymbolApi

abstract def filter(cond: (Universe.Symbol) => Boolean): Universe.Symbol

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

Классы определения
SymbolApi

abstract def fullName: String

Кодированное полное имя пути этого символа, где внешние и внутренние имена разделены точками.

Классы определения
SymbolApi

abstract def info: Universe.Type

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

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

Классы определения
SymbolApi

abstract def infoIn(site: Universe.Type): Universe.Type

Подпись типа этого символа, рассматриваемого как член заданного типа site.

Классы определения
SymbolApi

abstract def isAbstract: Boolean

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

Классы определения
SymbolApi

abstract def isAbstractOverride: Boolean

Отмечен ли этот символ как "абстрактный переопределение"?

Классы определения
SymbolApi

abstract def isConstructor: Boolean

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

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

Классы определения
SymbolApi

abstract def isFinal: Boolean

Является ли этот символ final?

Классы определения
SymbolApi

abstract def isImplementationArtifact: Boolean

Представляет ли этот символ артефакт реализации, не предназначенный для публичного использования? Примерами таких артефактов являются мосты стирания и внешние поля.

Классы определения
SymbolApi

abstract def isImplicit: Boolean

Представляет ли этот символ неявное значение, определение, класс или параметр?

Классы определения
SymbolApi

abstract def isJava: Boolean

Определен ли этот символ Java?

Классы определения
SymbolApi

abstract def isJavaAnnotation: Boolean

Представляет ли этот символ интерфейс аннотации Java?

Классы определения
SymbolApi

abstract def isJavaEnum: Boolean

Представляет ли этот символ класс java enum или значение java enum?

Definition Classes
SymbolApi

abstract def isMacro: Boolean

Является ли этот символ макросом?

Definition Classes
SymbolApi

abstract def isPackage: Boolean

Представляет ли этот символ определение пакета? Известные проблемы: https://github.com/scala/bug/issues/6732.

Definition Classes
SymbolApi

abstract def isPackageClass: Boolean

Представляет ли этот символ класс пакета? Если да, то isClass также гарантированно будет true.

Definition Classes
SymbolApi

abstract def isParameter: Boolean

Является ли этот символ параметром (параметром метода или параметром типа)?

Definition Classes
SymbolApi

abstract def isPrivate: Boolean

Представляет ли этот символ закрытое объявление или определение? Если да, privateWithin может рассказать больше о области видимости этого символа.

Definition Classes
SymbolApi

abstract def isPrivateThis: Boolean

Представляет ли этот символ объявление или определение, написанное в файле исходного кода как private[this] или сгенерированное в форме дерева/символа с комбинацией флагов LOCAL и PRIVATE? Если да, isPrivate гарантированно будет true.

Definition Classes
SymbolApi

abstract def isProtected: Boolean

Представляет ли этот символ защищенное объявление или определение? Если да, то privateWithin может рассказать больше об области видимости этого символа.

Definition Classes
SymbolApi

abstract def isProtectedThis: Boolean

Представляет ли этот символ объявление или определение, написанное в файле исходного кода как protected[this] или сгенерированное в форме дерева/символа с комбинацией флагов LOCAL и PROTECTED? Если да, isProtected гарантированно будет true.

Definition Classes
SymbolApi

abstract def isPublic: Boolean

Представляет ли этот символ общедоступное объявление или определение?

Definition Classes
SymbolApi

abstract def isSpecialized: Boolean

Является ли этот символ специализированным параметром типа или сгенерированным специализированным членом?

Definition Classes
SymbolApi

abstract def isStatic: Boolean

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

Definition Classes
SymbolApi

abstract def isSynthetic: Boolean

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

Definition Classes
SymbolApi

abstract def map(f: (Universe.Symbol) => Universe.Symbol): Universe.Symbol

Если это NoSymbol, возвращает NoSymbol, иначе возвращает результат применения f к этому символу.

Definition Classes
SymbolApi

abstract def name: NameType

Имя символа как члена типа Name.

Definition Classes
SymbolApi

abstract def orElse(alt: => Universe.Symbol): Universe.Symbol

Предоставляет альтернативу, если символ является NoSymbol.

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

абстрактный def overrides: Список[Символ.Универсум]

Возвращает все символы, переопределенные данным символом.

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

абстрактный def owner: Символ.Универсум

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

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

абстрактный def pos: Позиция.Универсум

Позиция дерева.

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

абстрактный def privateWithin: Символ.Универсум

Устанавливается, если символ имеет модификатор вида 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)

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

абстрактный def suchThat(cond: (Символ.Универсум) => Boolean): Символ.Универсум

Выполняет то же, что и filter, но аварийно завершается, если совпадений несколько.

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

абстрактный def typeSignature: Тип.Универсум

Определяющие классы
SymbolApi
См. также

info

абстрактный def typeSignatureIn(site: Тип.Универсум): Тип.Универсум

Определяющие классы
SymbolApi
См. также

infoIn

абстрактный def allOverriddenSymbols: Список[Символ.Универсум]

Определяющие классы
SymbolApi
Аннотации
@deprecated
Устарело

(С версии 2.11.0) используйте overrides вместо

См. также

overrides

абстрактный def associatedFile: Файл.Абстрактный

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

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

Определяющие классы
SymbolApi
Аннотации
@deprecated
Устарело

(С версии 2.11.0) используйте pos.source.file вместо

абстрактный def companionSymbol: Символ.Универсум

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

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

Определяющие классы
SymbolApi
Аннотации
@deprecated
Устарело

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

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

final def !=(arg0: Any): Boolean

Определение классов
AnyRef → Any

final def ##(): Int

Определение классов
AnyRef → Any

final def ==(arg0: Any): Boolean

Определение классов
AnyRef → Any

def asClass: Universe.ClassSymbol

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

Определение классов
SymbolApi
Исключения

ScalaReflectionException, если isClass равно false.

final def asInstanceOf[T0]: T0

Определение классов
Any

def asMethod: Universe.MethodSymbol

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

Определение классов
SymbolApi
Исключения

ScalaReflectionException, если isMethod равно false.

def asModule: Universe.ModuleSymbol

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

Определение классов
SymbolApi
Исключения

ScalaReflectionException, если isModule равно false.

def asTerm: Universe.TermSymbol

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

Определение классов
SymbolApi
Исключения

ScalaReflectionException, если isTerm равно false.

def asType: Universe.TypeSymbol

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

Определение классов
SymbolApi
Исключения

ScalaReflectionException, если isType равно false.

def clone(): AnyRef

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

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

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

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

def hashCode(): Int

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

def isClass: Boolean

Является ли этот символ определением класса или тракта? Если да, то isType также гарантированно истинно.

Определение классов
SymbolApi

final def isInstanceOf[T0]: Boolean

Определение классов
Any

def isMethod: Boolean

Является ли этот символ определением метода? Если да, то isTerm также гарантированно истинно.

Определение классов
SymbolApi

def isModule: Boolean

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

Классы-определения
SymbolApi

def isModuleClass: Boolean

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

Классы-определения
SymbolApi

def isOverloadedMethod: Boolean

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

Атрибуты
protected
Классы-определения
SymbolApi

def isTerm: Boolean

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

Классы-определения
SymbolApi

def isType: Boolean

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

Классы-определения
SymbolApi

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$Symbol.html

Spec-Zone.ru

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