Как я могу вызвать методы Kotlin с помощью reified generics из Java?

У меня есть следующий метод в Котлине:

inline fun <reified T> foo() {

}

Если я попытаюсь вызывать это из Java следующим образом:

myObject.foo();

ИЛИ например:

myObject.<SomeClass>foo();

Я получаю следующую ошибку:

java: foo() имеет закрытый доступ в MyClass

Как я могу вызвать метод foo из Java?

Ответ 1

Невозможно вызвать функции Kotlin inline с параметрами типа reified от Java, потому что они должны быть преобразованы и встроены на сайты вызовов (в вашем случае T должен быть заменен фактическим типом на каждом сайте вызова, но гораздо больше логики компилятора для функций inline, чем только это), и компилятор Java, как ожидается, полностью не осознает этого.