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