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
- All
Names
-
abstract
type
Name >: Null <: NameApi
The abstract type of names.
-
abstract
type
TermName >: Null <: TermNameApi with Name
The abstract type of names representing types.
-
abstract
type
TypeName >: Null <: TypeNameApi with Name
The abstract type of names representing terms.
-
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
-
implicit
def
stringToTermName(s: String): TermName
An implicit conversion from String to TermName.
An implicit conversion from String to TermName. Enables an alternative notation
"map": TermName
as opposed toTermName("map")
.- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use explicit
TermName(s)
instead
-
implicit
def
stringToTypeName(s: String): TypeName
An implicit conversion from String to TypeName.
An implicit conversion from String to TypeName. Enables an alternative notation
"List": TypeName
as opposed toTypeName("List")
.- Annotations
- @deprecated
- Deprecated
(Since version 2.11.0) use explicit
TypeName(s)
instead
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.
-
abstract
class
NameApi extends AnyRef
The API of Name instances.
-
trait
TermNameApi extends AnyRef
Has no special methods.
Has no special methods. Is here to provides erased identity for
TermName
. -
trait
TypeNameApi extends AnyRef
Has no special methods.
Has no special methods. Is here to provides erased identity for
TypeName
.
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.
-
abstract
class
TermNameExtractor extends AnyRef
An extractor class to create and pattern match with syntax
TermName(s)
. -
abstract
class
TypeNameExtractor extends AnyRef
An extractor class to create and pattern match with syntax
TypeName(s)
.
-
abstract
val
TermName: TermNameExtractor
The constructor/extractor for
TermName
instances. -
abstract
val
TypeName: TypeNameExtractor
The constructor/extractor for
TypeName
instances.