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