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

时间:2015-10-09 17:09:13

标签: kotlin

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

class Foo {
    val obj = object {
        val field = 42
    }
}

fun foo() {
    Foo().obj.field // unresolved reference field
}

1 个答案:

答案 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.
}