Есть ли способ ограничения видимости функций stdlib в Kotlin?

Kotlin поставляется со многими стандартными библиотечными функциями, многие из которых отображаются по умолчанию без их фактического импорта. Так работает как listOf, arrayListOf, ArrayList<T>()... де-факто вставляются в глобальное пространство имен. Есть ли флаг компилятора, который бы отключил это поведение?

1 ответ

Решение

К сожалению, вы не можете. так же, как вы не можете запретить автоматически импортируемые java.lang пакет в яве.

Вам не нужно беспокоиться об автоматически импортируемых функциях верхнего уровня. Если вы не используете никаких функций верхнего уровня, то в байт-код Java не передается ссылка на класс / метод. И все *arrayOf функции будут преобразованы в создание массива Java, например:

Kotlin          |        Java
------------------------------------
byteArrayOf     |    new byte[]
------------------------------------
shortArrayOf    |    new short[]
------------------------------------
intArrayOf      |    new int[]
------------------------------------
longArrayOf     |    new long[]
------------------------------------
floatArrayOf    |    new float[]
------------------------------------
doubleArrayOf   |    new double[]
------------------------------------
charArrayOf     |    new char[]
------------------------------------
booleanArrayOf  |    new boolean[]
------------------------------------
arrayOf<T>      |    new T[]
------------------------------------
Другие вопросы по тегам