Spec-Zone.ru › Scala 2.13 Reflection

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

abstract type ClassSymbol >: Null <: Universe.ClassSymbolApi with Universe.TypeSymbol

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

Source
Symbols.scala
Линейные супертипы
Universe.<refinement>, Universe.<refinement>, Universe.ClassSymbolApi, Universe.TypeSymbolApi, Universe.SymbolApi, AnyRef, Any

Типы членов

final type NameType = Universe.TypeName

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

Definition Classes
TypeSymbolApi → SymbolApi

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

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

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

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

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

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

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

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

Список всех базовых классов этого типа (включая его собственный typeSymbol) в порядке линеаризации, начиная с самого класса и заканчивая классом Any.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Представляет ли этот символ определение пользовательского класса значений? Иными словами, является ли AnyVal среди его родительских классов?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Представляет ли этот символ определение числового класса значений? Иными словами, является ли он одним из scala.Double, scala.Float, scala.Long, scala.Int, scala.Char, scala.Short, scala.Byte, scala.Unit или scala.Boolean?

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

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

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

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

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

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

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

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

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

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

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

Представляет ли этот символ определение примитивного класса? Иными словами, является ли он одним из scala.Double, scala.Float, scala.Long, scala.Int, scala.Char, scala.Short, scala.Byte, scala.Unit или scala.Boolean?

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

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

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

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

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

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

Definition Classes
ClassSymbolApi

abstract def isSpecialized: Boolean

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

Definition Classes
SymbolApi

abstract def isStatic: Boolean

Является ли этот символ статическим (т.е. без внешнего экземпляра)? В: Когда именно sym отмечается как STATIC? Oтвет: Если это член верхнего уровня объекта, или объекта, содержащегося в объекте верхнего уровня, или на любой глубине вложенности. 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 isTrait: Boolean

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

Definition Classes
ClassSymbolApi

abstract def knownDirectSubclasses: Set[Universe.Symbol]

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

Definition Classes
ClassSymbolApi

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

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

Definition Classes
SymbolApi

abstract def module: Universe.Symbol

Модуль, соответствующий этому классу модуля, или NoSymbol, если этот символ не является классом модуля.

Definition Classes
ClassSymbolApi

abstract def name: Symbol.NameType

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

Definition Classes
SymbolApi

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

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

Definition Classes
SymbolApi

abstract def overrides: List[Universe.Symbol]

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

Definition Classes
SymbolApi

abstract def owner: Universe.Symbol

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

Definition Classes
SymbolApi

abstract def pos: Universe.Position

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

Definition Classes
SymbolApi

abstract def primaryConstructor: Universe.Symbol

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

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

Definition Classes
ClassSymbolApi

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

Definition Classes
SymbolApi

abstract def selfType: Universe.Type

Если этот символ — класс или трейт, его тип self, в противном случае — тип самого символа.

Definition Classes
ClassSymbolApi

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

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

Definition Classes
SymbolApi

abstract def superPrefix(supertpe: Universe.Type): Universe.Type

Тип C.super[M], где C — текущий класс, а M — supertpe.

Definition Classes
ClassSymbolApi

abstract def thisPrefix: Universe.Type

Тип C.this, где C — текущий класс.

Definition Classes
ClassSymbolApi

abstract def toType: Universe.Type

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

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

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

Definition Classes
TypeSymbolApi

abstract def toTypeConstructor: Universe.Type

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

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

Definition Classes
TypeSymbolApi

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

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

Definition Classes
TypeSymbolApi

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

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

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

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

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

info

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

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

infoIn

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

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

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

См. также

overrides

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

final def asClass: Universe.ClassSymbol

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

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

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

final def asInstanceOf[T0]: T0

Definition Classes
Any

def asMethod: Universe.MethodSymbol

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

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

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

def asModule: Universe.ModuleSymbol

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

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

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

def asTerm: Universe.TermSymbol

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

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

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

final def asType: Universe.TypeSymbol

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

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

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

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

final def isClass: Boolean

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

Definition Classes
ClassSymbolApi → 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$ClassSymbol.html

Spec-Zone.ru

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