Spec-Zone.ru › Scala 2.13 Reflection

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

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

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

Источник
Symbols.scala
Линейные надтипы
Universe.<refinement>, Universe.TypeSymbolApi, Universe.SymbolApi, AnyRef, Any
Известные подклассы
FreeTypeSymbol, ClassSymbol

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

final тип NameType = Universe.TypeName

Символы типов имеют свои имена типа TypeName.

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

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

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

Перегрузки этого символа.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

абстрактный def isAbstract: Boolean

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

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

абстрактный def isAbstractOverride: Boolean

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

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

абстрактный def isAliasType: Boolean

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

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

абстрактный def isConstructor: Boolean

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

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

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

абстрактный def isContravariant: Boolean

Является ли параметр типа, представленный этим символом, контравариантным?

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

абстрактный def isCovariant: Boolean

Является ли параметр типа, представленный этим символом, ковариантным?

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

абстрактный def isExistential: Boolean

Представляет ли этот символ существовательно связанный тип?

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

абстрактный def isFinal: Boolean

Является ли этот символ финальным?

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

abstract def isImplementationArtifact: Boolean

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

Definition Classes
SymbolApi

abstract def isImplicit: Boolean

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

Definition Classes
SymbolApi

abstract def isJava: Boolean

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

Definition Classes
SymbolApi

abstract def isJavaAnnotation: Boolean

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

Definition Classes
SymbolApi

abstract def isJavaEnum: Boolean

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

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 также гарантированно будет истинным.

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 гарантированно будет истинным.

Definition Classes
SymbolApi

abstract def isProtected: Boolean

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

Definition Classes
SymbolApi

abstract def isProtectedThis: Boolean

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

Definition Classes
SymbolApi

abstract def isPublic: Boolean

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

Definition Classes
SymbolApi

abstract def isSpecialized: Boolean

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

Definition Classes
SymbolApi

abstract def isStatic: Boolean

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

Definition Classes
SymbolApi

abstract def isSynthetic: Boolean

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

абстрактный 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)

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

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

Делает то же, что и filter, но аварийно завершает работу, если совпадений несколько.

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

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

Ссылка на тип, который ссылается на этот символ типа. Обратите внимание, если символ является членом класса, почти всегда интересуют asTypeIn с типом места вместо этого.

Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType — это тип C[T].

В отличие от этого, C.info будет подписью типа PolyType(ClassInfoType(...)), которая описывает параметры типов, параметры значений, родительские типы и члены C.

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

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

Конструктор типа, соответствующий этому символу типа. Это отличается от toType тем, что параметры типов являются частью результатов toType, но не toTypeConstructor.

Пример: Дано объявление класса class C[T] { ... } , которое генерирует символ C. Тогда C.toType — это тип C[T], но C.toTypeConstructor — это C.

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

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

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

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

abstract def typeParams: List[Universe.Symbol]

Для полиморфного типа — его параметры типа, для всех других типов — пустой список.

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

abstract def typeSignature: Universe.Type

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

info

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

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

infoIn

abstract def allOverriddenSymbols: List[Universe.Symbol]

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

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

См. также

overrides

abstract def associatedFile: AbstractFile

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

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

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

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

abstract def companionSymbol: Universe.Symbol

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

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

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

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

abstract def isAbstractType: Boolean

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

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

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

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

final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def ##(): Int

Definition Classes
AnyRef → Any

final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any

def asClass: Universe.ClassSymbol

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

Definition Classes
SymbolApi
Исключения

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

final def asInstanceOf[T0]: T0

Definition Classes
Any

def asMethod: Universe.MethodSymbol

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

Definition Classes
SymbolApi
Исключения

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

def asModule: Universe.ModuleSymbol

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

Definition Classes
SymbolApi
Исключения

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

def asTerm: Universe.TermSymbol

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

Definition Classes
SymbolApi
Исключения

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

final def asType: Universe.TypeSymbol

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

Definition Classes
TypeSymbolApi → SymbolApi
Исключения

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

def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.CloneNotSupportedException]) @native()

final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef

def equals(arg0: AnyRef): Boolean

Definition Classes
AnyRef → Any

def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.Throwable])

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

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

def isClass: Boolean

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

Definition Classes
SymbolApi

final def isInstanceOf[T0]: Boolean

Definition Classes
Any

def isMethod: Boolean

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

Definition Classes
SymbolApi

def isModule: Boolean

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

Definition Classes
SymbolApi

def isModuleClass: Boolean

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

Definition Classes
SymbolApi

def isOverloadedMethod: Boolean

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

Attributes
protected
Definition Classes
SymbolApi

def isTerm: Boolean

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

Definition Classes
SymbolApi

final def isType: Boolean

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

Definition Classes
TypeSymbolApi → SymbolApi

final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef

final def notify(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def notifyAll(): Unit

Definition Classes
AnyRef
Annotations
@native()

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

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

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

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@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$TypeSymbol.html

Spec-Zone.ru

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