kotlinpoet / com.squareup.kotlinpoet / TypeName

TypeName

sealed class TypeName

Any type in Kotlin's type system. This class identifies simple types like Int and String, nullable types like Int?, composite types like Array<String> and Set<String>, and unassignable types like Unit.

Type names are dumb identifiers only and do not model the values they name. For example, the type name for kotlin.List doesn't know about the size() function, the fact that lists are collections, or even that it accepts a single type parameter.

Instances of this class are immutable value objects that implement equals() and hashCode() properly.

Referencing existing types

In an annotation processor you can get a type name instance for a type mirror by calling asTypeName. In reflection code, you can use asTypeName.

Defining new types

Create new reference types like com.example.HelloWorld with ClassName.bestGuess. To build composite types like Set<Long>, use the factory methods on ParameterizedTypeName, TypeVariableName, and WildcardTypeName.

Properties

annotations

val annotations: List<AnnotationSpec>

isAnnotated

val isAnnotated: Boolean

isNullable

val isNullable: Boolean

Functions

copy

abstract fun copy(nullable: Boolean = this.isNullable, annotations: List<AnnotationSpec> = this.annotations.toList()): TypeName

equals

open fun equals(other: Any?): Boolean

hashCode

open fun hashCode(): Int

toString

open fun toString(): String

Extension Functions

jvmSuppressWildcards

fun TypeName.jvmSuppressWildcards(suppress: Boolean = true): TypeName

jvmWildcard

fun TypeName.jvmWildcard(): TypeName

Inheritors

ClassName

class ClassName : TypeName, Comparable<ClassName>

A fully-qualified class name for top-level and member classes.

Dynamic

object Dynamic : TypeName

LambdaTypeName

class LambdaTypeName : TypeName

ParameterizedTypeName

class ParameterizedTypeName : TypeName

TypeVariableName

class TypeVariableName : TypeName

WildcardTypeName

class WildcardTypeName : TypeName