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

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

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

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

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

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

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

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