是否有限制stdlib函数在Kotlin中的可见性?
Kotlin带有许多标准的库函数,其中很多默认情况下是可见的,而实际上并没有导入它们。 所以像listOf
, arrayListOf
, ArrayList()
等函数事实上被插入到全局名称空间中。 有一个编译器标志,将禁用此行为?
可悲的是,你不能。 就像你不能禁止java中的自动导入的java.lang
包一样。
您不必担心自动导入的顶级function。 如果您不使用任何顶级函数,则不会向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 | new T[] ------------------------------------