Spec-Zone.ru › Scala 2.13 Reflection

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

Трейт ClassSymbolApi extends Universe.TypeSymbolApi

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

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

Self Type
Universe.ClassSymbol
Source
Symbols.scala
Линейные супертипы
Universe.TypeSymbolApi, Universe.SymbolApi, AnyRef, Any
Известные подклассы
ClassSymbol

Члены типов

final тип NameType = Universe.TypeName

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

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

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

abstract def alternatives: List[Universe.Symbol]

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

Definition Classes
SymbolApi

abstract def annotations: List[Universe.Annotation]

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

Definition Classes
SymbolApi

abstract def baseClasses: List[Universe.Symbol]

abstract def companion: Universe.Symbol

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

Definition Classes
SymbolApi

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

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

Definition Classes
SymbolApi

abstract def fullName: String

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

Definition Classes
SymbolApi

abstract def info: Universe.Type

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

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

Definition Classes
SymbolApi

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

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

Definition Classes
SymbolApi

abstract def isAbstract: Boolean

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

Definition Classes
SymbolApi

abstract def isAbstractOverride: Boolean

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

Definition Classes
SymbolApi

abstract def isAliasType: Boolean

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

Definition Classes
TypeSymbolApi

abstract def isCaseClass: Boolean

abstract def isConstructor: Boolean

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

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

Definition Classes
SymbolApi

abstract def isContravariant: Boolean

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

Definition Classes
TypeSymbolApi

abstract def isCovariant: Boolean

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

Definition Classes
TypeSymbolApi

abstract def isDerivedValueClass: Boolean

abstract def isExistential: Boolean

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

Definition Classes
TypeSymbolApi

abstract def isFinal: Boolean

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

Definition Classes
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 enum или значение java enum?

Definition Classes
SymbolApi

abstract def isMacro: Boolean

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

Definition Classes
SymbolApi

abstract def isNumeric: Boolean

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 isPrimitive: Boolean

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 isSealed: Boolean

abstract def isSpecialized: Boolean

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

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

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

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

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

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

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

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

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

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

Если это запечатанный класс, его известные непосредственные подклассы. В противном случае - пустой набор.

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

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

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

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

абстрактный def name: ClassSymbol.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 primaryConstructor: Universe.Symbol

Для класса или модульного класса Scala - первичный конструктор класса. Для тракта Scala - его конструктор миксинов. Для класса пакета Scala - NoSymbol. Для Java-класса - NoSymbol.

Известные проблемы: из-за scala/bug#8367, primaryConstructor может возвращать неожиданные результаты, когда вызывается для Java-классов (для некоторого смутного определения "Java-класса", который, по-видимому, включает не только сгенерированные javac classfiles, но также и классы, определенные в программах Scala в пакете java.lang). Что еще хуже, для некоторых Java-классов мы не можем даже гарантировать стабильность возвращаемого значения - в зависимости от вашей конфигурации загрузчика классов и/или версии JDK, вы можете получить разные primaryConstructor для одного и того же ClassSymbol. Эти проблемы зарегистрированы в scala/bug#8193.

абстрактный 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 selfType: Universe.Type

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

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

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

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

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

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

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

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

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

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

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

info

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

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

infoIn

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

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

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

См. также

overrides

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

final def !=(arg0: Any): Boolean

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

final def ##(): Int

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

def +(other: String): String

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

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

Неявный
Этот член добавлен благодаря неявной конверсии из Universe.ClassSymbolApi вArrowAssoc[Universe.ClassSymbolApi] выполняемой методом ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

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

final def asClass: Universe.ClassSymbol

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

Определяющие классы
ClassSymbolApi → 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.

final def asType: Universe.TypeSymbol

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

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

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

def clone(): AnyRef

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

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

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

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

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

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

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

def ensuring(cond: Boolean): Universe.ClassSymbolApi

Неявный
Этот член добавляется неявным преобразованием из Universe.ClassSymbolApi вEnsuring[Universe.ClassSymbolApi] с помощью метода 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.ClassSymbolApi вStringFormat[Universe.ClassSymbolApi] с помощью метода StringFormat в scala.Predef.
Определяющие классы
StringFormat
Аннотации
@inline()

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

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

def hashCode(): Int

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

final def isClass: Boolean

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

Определяющие классы
ClassSymbolApi → 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

final def isType: Boolean

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

Определяющие классы
TypeSymbolApi → 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$ClassSymbolApi.html

Spec-Zone.ru

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