是否有限制stdlib函数在Kotlin中的可见性?

Kotlin带有许多标准的库函数,其中很多默认情况下是可见的,而实际上并没有导入它们。 所以像listOfarrayListOfArrayList()等函数事实上被插入到全局名称空间中。 有一个编译器标志,将禁用此行为?

可悲的是,你不能。 就像你不能禁止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[] ------------------------------------