我无法访问内部对象的成员。
class Foo {
val obj = object {
val field = 42
}
}
fun foo() {
Foo().obj.field // unresolved reference field
}
答案 0 :(得分:3)
问题是 obj 被视为自己范围之外的 Any 类型。这意味着只有obj可以引用自己的属性,因为Any类不包含任何属性。
如果您有一个具有属性的接口,并且您的对象扩展了该接口并实现了该属性,那么您将能够在具有该属性可见性的任何地方引用它:
interface FieldHolder {
val field: Int
}
class Foo {
val obj = object: FieldHolder {
override val field = 42
}
}
fun foo() {
Foo().obj.field // this should now work.
}