Есть ли способ ограничения видимости функций 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[]
------------------------------------