Как получить доступ к членам внутреннего объекта в Котлине

Я не могу получить доступ к членам внутреннего объекта.

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

Solutions Collecting From Web of "Как получить доступ к членам внутреннего объекта в Котлине"

Проблема в том, что 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. }