Intereting Posts
Проверьте, является ли класс допустимым значением для KParameter Kotlin – Как создать функцию псевдонима RxJava flatmap ()? Поддержка Spring WebFlux и Kotlin: как сделать интеграционные тесты? Почему нулевые числа не сохраняют идентификатор Получение исходного ответа HTML / JSON на ошибку с помощью Retrofit 2 и Kotlin Преимущества LINQ над функциональными цепочками методов Экспериментальная поддержка JUnit в Android + Kotlin не работает В Android Studio, как мне изменить соглашения об именах Kotlin? Как отладить «ошибку SQL (запрос) или отсутствующую базу данных» в приложении для Android? Kotlin REST для машинописных определений Когда следует предпочесть функции расширения Котлина? Как я могу подключить Продюсера к Актеру? Преобразование статических переменных из Java в Kotlin RxJava2 switchIfEmpty и проверка выполнения Котлин || Элемент Recycleview не раздувается: недоступный код для каждого переопределенного метода RecycleView.Adapter

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

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

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

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