Intereting Posts
Функции расширения Котлина и функции-члены? Как передать пользовательский объект через намерение в kotlin Как преобразовать исходный файл kotlin в исходный файл java Как я могу работать с Redux / React в Kotlin.js? Почему вызовы должны быть вызваны с помощью вызова класса класса? Могу ли я использовать ClosedRange <T> в спящем режиме только классы разрешены в левой части литерала класса Внедрение onItemClickLitsner в recyclerView Kotlin -android К сожалению, «имя приложения» остановлено из-за библиотеки Jsoup Переопределение «writeToParcel» не допускается. Вместо этого используйте компаньон «Parceler» Выделите несколько элементов в представлении списка андроида при выборе Как объявить и инициализировать MutableSet в Котлине? Как создать общий массив, заполненный нулями в Котлине? Конструктор Котлин с суперклассом Конструкторы для типов с использованием обобщенных типов

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

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

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