Inspectopedia Help

Leaking 'this' in constructor

Reports unsafe operations with this during object construction including:

  • Accessing a non-final property during class initialization: from a constructor or property initialization

  • Calling a non-final function during class initialization

  • Using this as a function argument in a constructor of a non-final class

If other classes inherit from the given class, they may not be fully initialized at the moment when an unsafe operation is carried out.

Example:

abstract class Base { val code = calculate() abstract fun calculate(): Int } class Derived(private val x: Int) : Base() { override fun calculate() = x } fun testIt() { println(Derived(42).code) // Expected: 42, actual: 0 }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Kotlin, @snapshot@

Last modified: 13 July 2023