В Kotlin, если я определяю метод для анонимного объекта, иногда я могу получить к нему доступ, а иногда нет. Похоже, это как-то связано с правилами области видимости, но я не уверен, что.
В приведенном ниже примере кода доступ к example3.field.method()
приведет к ошибке компиляции. Интересно, что example2.field.method()
компилируется просто отлично.
Что может быть объяснением для поведения ниже?
class Example3 {
val field = object {
fun method() {}
}
}
fun showcase() {
val example1 = object {
fun method() {}
}
example1.method()
println(example1::class.qualifiedName)
class Example2 {
val field = object {
fun method() {}
}
}
val example2 = Example2()
example2.field.method()
println(example2::class.qualifiedName)
val example3 = Example3()
// example3.field.method() // won't compile
println(example3::class.qualifiedName)
}