kotlin: cómo puedo llamar a la function desde la expresión del object

Tengo ese código:

// foo.kt fun bar() { val foo = object { fun zzz() { println() } } foo.zzz() } 

Y uso kotlinc foo.kt para comstackr el código de kotlin. Obtuve 'FooKt.class' y 'FooKt $ bar $ foo $ 1.class' como resultado. Y luego descompilo el file 'FooKt.class' para descubrir el código de Java, es así (por jd-gui):

 import java.io.PrintStream; import kotlin.Metadata; @Metadata(mv={1, 1, 6}, bv={1, 0, 1}, k=2, d1={"\000\006\n\000\n\002\020\002\032\006\020\000\032\0020\001"}, d2={"bar", ""}) public final class MainKt { public static final void bar() { Object foo = new Object() { public final void zzz() { System.out.println(); } }; foo.zzz(); // You can NOT do this in java world. But kotlin can do. Why? } } 

Tengo curiosidad sobre el código de Java anterior. Si pega el código en cualquier ide y comstack (javac), habrá un error: zzz unresolved . El error anterior dice que no puede llamar a ninguna function personalizada desde un new Object() incluso si lo extiende. Ahora es la pregunta: Kotlin generó tal código de error pero todo parece estar bien, ¿por qué?

Solutions Collecting From Web of "kotlin: cómo puedo llamar a la function desde la expresión del object"