trait Names extends AnyRef
EXPERIMENTAL
This trait defines Name
s in Scala Reflection, and operations on them.
Names are simple wrappers for strings. Name has two subtypes TermName and TypeName which distinguish names of terms (like objects or members) and types. A term and a type of the same name can co-exist in an object.
To search for the map
method (which is a term) declared in the List
class, one can do:
scala> typeOf[List[_]].member(TermName("map")) res0: reflect.runtime.universe.Symbol = method map
To search for a type member, one can follow the same procedure, using TypeName
instead.
For more information about creating and using Name
s, see the Reflection Guide: Annotations, Names, Scopes, and More
- Source
- Names.scala
- Grouped
- Alphabetic
- By Inheritance
- Names
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract type Name >: Null <: NameApi
The abstract type of names.
- abstract class NameApi extends AnyRef
The API of Name instances.
- abstract type TermName >: Null <: TermNameApi with Name
The abstract type of names representing types.
- trait TermNameApi extends AnyRef
Has no special methods.
Has no special methods. Is here to provides erased identity for
TermName
. - abstract class TermNameExtractor extends AnyRef
An extractor class to create and pattern match with syntax
TermName(s)
. - abstract type TypeName >: Null <: TypeNameApi with Name
The abstract type of names representing terms.
- trait TypeNameApi extends AnyRef
Has no special methods.
Has no special methods. Is here to provides erased identity for
TypeName
. - abstract class TypeNameExtractor extends AnyRef
An extractor class to create and pattern match with syntax
TypeName(s)
.
Abstract Value Members
- abstract val TermName: TermNameExtractor
The constructor/extractor for
TermName
instances. - abstract val TypeName: TypeNameExtractor
The constructor/extractor for
TypeName
instances. - abstract def newTermName(s: String): TermName
Create a new term name.
Create a new term name.
- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use TermName instead
- abstract def newTypeName(s: String): TypeName
Creates a new type name.
Creates a new type name.
- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use TypeName instead
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Names, B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def ensuring(cond: (Names) => Boolean, msg: => Any): Names
- def ensuring(cond: (Names) => Boolean): Names
- def ensuring(cond: Boolean, msg: => Any): Names
- def ensuring(cond: Boolean): Names
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @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()
Deprecated Value Members
- def stringToTermName(s: String): TermName
A former implicit conversion from String to TermName.
A former implicit conversion from String to TermName.
This used to be an implicit conversion, enabling an alternative notation
"map": TermName
as opposed toTermName("map")
. It is only kept for binary compatibility reasons, and should not be used anymore.- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use
TermName(s)
instead
- def stringToTypeName(s: String): TypeName
A former implicit conversion from String to TypeName.
A former implicit conversion from String to TypeName.
This used to be an implicit conversion, enabling an alternative notation
"List": TypeName
as opposed toTypeName("List")
. It is only kept for binary compatibility reasons, and should not be used anymore.- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use
TypeName(s)
instead
- def →[B](y: B): (Names, B)
- Implicit
- This member is added by an implicit conversion from Names toArrowAssoc[Names] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.
Names
API
The methods available for each reflection entity, without the implementation. Since the reflection entities are later overridden by runtime reflection and macros, their API counterparts guarantee a minimum set of methods that are implemented.
Extractors
Extractors provide the machinery necessary to allow pattern matching and construction of reflection entities that is similar to case classes, although the entities are only abstract types that are later overridden.