Что такое внутренний модификатор kotlin в байт-коде? - PullRequest
0 голосов
/ 09 февраля 2019
  1. Если я создаю библиотеку с kotlin и помечаю некоторый класс внутренним, как это выглядит из java без плагина Kotlin в maven и в IDE, это будет просто public или package, или у JVM есть другие модификаторы, которые есть у javaне?
  2. если я использую в модуле один класс с аннотацией @service и помечаю его как внутренний, и использую этот модуль в другом модуле, работает ли он?
  3. Как это выглядит в байт-коде?

1 Ответ

0 голосов
/ 09 февраля 2019

Эти объявления являются общедоступными к тому времени, когда они попадают в байт-код, но их имена искажены, чтобы клиенты Java не могли случайно вызвать их.Так что ... Это не совсем безопасно, но указано, что они не должны быть вызваны.(Это в документации здесь ).

Например, если вы пометите функцию с именем calculate внутренняя, она может закончиться именем calculate$modulename в байт-коде.(Кажется, в некоторых случаях имена не искажены, по крайней мере, на основе моего тестирования этого.)

Кроме того, IntelliJ также обнаружит, было ли объявление скомпилировано с видимостью internal (так как естьметаданные, указывающие на это), и покажет вам ошибку при попытке его использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...