我无法访问内部对象的成员。
class Foo {
val obj = object {
val field = 42
}
}
fun foo() {
Foo().obj.field // unresolved reference field
}
Run Code Online (Sandbox Code Playgroud)
问题在于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.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |