Объекты компаньона Котлина и отражение

В чем-то интереснее использовать сопутствующие объекты и отражение Java. Я не уверен, что это задумано или нет, или если я просто не понимаю вещи полностью.

У меня есть этот код

public class TestClass { companion object { public platformStatic var data: String? = null } } 

Поле data конечном итоге заполняется посредством отражения от другого класса.

Я обнаружил, что если я получаю доступ к классу с помощью TestClass.javaClass , я получаю внутренний класс компаньона, который имеет только методы доступа к этому полю. Доступ к нему через javaClass<TestClass>() возвращает мне ожидаемый класс Java с полным доступом к полям.

Я просто пропустил что-то очевидное? Есть ли причина такого поведения?

Статические поля хранятся во внешнем классе для облегчения взаимодействия с Java: вы можете сказать TestClass.data в Java, чтобы ссылаться на это поле (это должно быть, почему вы помечали его platformStatic в первую очередь).

Intereting Posts
Как составить nullables в Kotlin Есть ли какой-нибудь метод в Kotlin, который позволяет мне перевести значение из диапазона в другой диапазон? Объединение всех стандартных и пользовательских десериализаторов Джексона в универсальный десериализатор свойств Класс данных Котлина с производными свойствами Android Studio не удалось с Kotlin Kotlin: Как заменить уже открытый фрагмент на новый фрагмент в студии Android? Ошибки привязки данных в прикладном модуле Что такое открытое свойство? Почему я не могу сделать свой сеттер частным? объекты закрытого класса, загадочно становящиеся нулевыми, если ссылаются на другие объекты-компаньоны запустить Android-версию 2.3.3 проект kotlin в android studio 3.0.1 после обновления Intellij IDEA не показывает доступные предложения для ресурсов Android в файлах Kotlin Предупреждение: опция '-d' с назначением каталога игнорируется, поскольку указан '-module' Получение доступа к экземпляру в функции обертки Метод, который не вызывается, без ошибок, может быть, связан с дженериками / сопутствующими объектами / наследованием / параллелизмом / вложением personFields mask требуется. Укажите один или несколько допустимых путей