如何访问Kotlin中的内部对象的成员

我无法访问内部对象的成员。

class Foo { val obj = object { val field = 42 } } fun foo() { Foo().obj.field // unresolved reference field } 

问题是obj被认为是它自己范围之外的任何类型的任何东西。 这意味着只有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. }