June 2018
Intermediate to advanced
316 pages
6h 34m
English
Let's inspect the lazy delegate:
fun main (args: Array<String>) { val lazyValue by lazy { }}
The lazy function isn't an inline function, so the bytecode contains a separate class for the initializer lambda. The simplified bytecode for this class looks like this:
final class delegation/kotlin/MainKt$main$lazyValue$2 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 { public synthetic bridge invoke()Ljava/lang/Object; public final invoke()V <init>()V public final static Ldelegation/kotlin/MainKt$main$lazyValue$2; INSTANCE static <clinit>()V final static INNERCLASS delegation/kotlin/MainKt$main$lazyValue$2 null null}
The simplified bytecode of the Main class looks like this:
public final ...Read now
Unlock full access