liveBook · Manning

Initializer block

As explained in Kotlin in Action, 2E

The init keyword introduces a Kotlin initializer block in a class.

An initializer block adds setup logic to a Kotlin class when the primary constructor’s compact syntax cannot contain that code. It is written with init inside the class body and works alongside primary-constructor parameters and properties. section 4.2 section 4.2.1

class User constructor(_nickname: String) {    #1
    val nickname: String
 
    init {                                     #2
        nickname = _nickname
    }
}

This explicit form stores the constructor argument in a property during object creation: the constructor declaration introduces the parameter, while init performs the assignment. section 4.2.1

The syntax supports several related initialization choices:

  • Refer to primary-constructor parameters from property initializers or initializer blocks. section 4.2.1
  • Declare several initializer blocks when a class needs multiple pieces of initialization code. section 4.2.1
  • Replace simple initializer assignment with a property parameter such as val nickname: String when no extra logic is needed. section 4.2.1

Use init for initialization work that belongs to class creation but does not fit directly in the primary constructor. Secondary constructors provide another initialization option when constructor flexibility is required. section 4.6 section 4.2.1

How Kotlin in Action, 2E covers it

How deep it goes
Explains syntax, constructor-parameter access, property-assignment alternatives, and multiple initializer blocks.
Examples
Uses a User class to assign a constructor parameter to a property inside an init block.
What it assumes
Builds from primary-constructor syntax and introduces how constructor parameters initialize class properties.
What you can do after
Apply initializer blocks in Kotlin classes when initialization requires logic beyond property-parameter syntax.
How it connects
Ties initializer blocks to primary constructors, secondary constructors, constructor parameters, and properties.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Kotlin in Action, 2E. The section links point to the parts of the book it draws on.