Трейт scala.reflect.api.Symbols
trait Symbols extends AnyRef
Члены типов
abstract тип ClassSymbol >: Null <: Universe.ClassSymbolApi with Universe.TypeSymbol
тракт ClassSymbolApi extends Universe.TypeSymbolApi
API символов классов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
abstract тип MethodSymbol >: Null <: Universe.MethodSymbolApi with Universe.TermSymbol
тракт MethodSymbolApi extends Universe.TermSymbolApi
API символов методов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
abstract тип ModuleSymbol >: Null <: Universe.ModuleSymbolApi with Universe.TermSymbol
тракт ModuleSymbolApi extends Universe.TermSymbolApi
API символов модулей. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
abstract тип Symbol >: Null <: Universe.SymbolApi
тракт SymbolApi extends AnyRef
API символов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
abstract тип TermSymbol >: Null <: Universe.TermSymbolApi with Universe.Symbol
тракт TermSymbolApi extends Universe.SymbolApi
API символов членов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX методы тестирования, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
abstract тип TypeSymbol >: Null <: Universe.TypeSymbolApi with Universe.Symbol
тракт TypeSymbolApi extends Universe.SymbolApi
API символов типов. Основным источником информации о символах является страница Symbols.
Класс Symbol определяет isXXX тестовые методы, такие как isPublic или isFinal, params и returnType методы для символов методов, baseClasses для символов классов и так далее. Некоторые из этих методов не имеют смысла для определенных подклассов Symbol и возвращают NoSymbol, Nil или другие пустые значения.
Абстрактные члены-значения
abstract val NoSymbol: Universe.Symbol
Специальный символ "отсутствия". Часто используется в API для обозначения значения по умолчанию или пустого значения.
Конкретные члены значения
final def !=(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def ##(): Int
- Определяющие классы
- AnyRef → Any
def +(other: String): String
def ->[B](y: B): (Symbols, B)
final def ==(arg0: Any): Boolean
- Определяющие классы
- AnyRef → Any
final def asInstanceOf[T0]: T0
- Определяющие классы
- Any
def clone(): AnyRef
- Атрибуты
- protected[java.lang]
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
def ensuring(cond: (Symbols) => Boolean, msg: => Any): Symbols
def ensuring(cond: (Symbols) => Boolean): Symbols
def ensuring(cond: Boolean, msg: => Any): Symbols
def ensuring(cond: Boolean): Symbols
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
final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
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.html
ЭКСПЕРИМЕНТАЛЬНО
Этот трейт определяет символы и операции над ними.
Символы используются для установления связей между именем и сущностью, к которой оно относится, например, классом или методом. Всё, что вы определяете и можете назвать в Scala, имеет связанный с ним символ.
Символы содержат всю доступную информацию о объявлении сущности (класс/объект/трейт и т.д.) или члена (vals/vars/defs и т.д.), и как таковые являются важной абстракцией, центральной для как для времени выполнения рефлексии, так и для макросов.
Символ может предоставить множество информации, начиная от базового
nameметода, доступного для всех символов, до более сложных концепций, таких как получениеbaseClassesизClassSymbol. Другие распространённые случаи использования символов включают проверку сигнатур членов, получение параметров типа класса, получение типа параметра метода или определение типа поля.Пример использования рефлексии во время выполнения; получение сигнатуры типа метода:
scala> import scala.reflect.runtime.universe._ import scala.reflect.runtime.universe._ scala> class C[T] { def test[U](x: T)(y: U): Int = ??? } defined class C scala> val test = typeOf[C[Int]].member(TermName("test")).asMethod test: reflect.runtime.universe.MethodSymbol = method test scala> test.info res0: reflect.runtime.universe.Type = [U](x: T)(y: U)scala.IntСимволы организованы в иерархию. Например, символ, представляющий параметр метода, принадлежит соответствующему символу метода, символ метода принадлежит содержащему его классу, класс принадлежит содержащему пакету и так далее.
Некоторые типы узлов дерева, такие как Ident (ссылки на идентификаторы) и Select (ссылки на члены) предоставляют метод
symbolдля получения символа, представляющего их объявление. Во время фазы проверки типов компилятор ищет символ на основе имени и области видимости и устанавливаетsymbolполе узлов дерева.Для получения дополнительной информации об использовании
Symbolи связанных сложностях см. Руководство по рефлексии: Символы