为啥kotlin允许包名和文件所在路径不一致

首先,Java 文件的包名(由 package 语句定声明)并不要求与文件路径一致,可以参见 Package name is different than the folder structure but still Java code compiles 这个问题下的回答。
Kotlin 的包和 import 语句具体可以参见我的专栏文章:填坑:Kotlin 包和 import 语句。
-----分隔线------
可以这样说,Java 包和 Kotlin 包都表示类的层次结构,而不是源文件的层次结构。
比如说,我们在 PackageDemo 项目源代码文件夹 src 下新建几个源代码文件:
src\\KotlinA.kt:package a.bsrc\\JavaA.java:package a;src\\a\\b\\KotlinB.kt:定义了 KotlinB 类(无 package 语句)src\\a\\b\\JavaB.java:(无 package 语句)编译后得到的类文件在 out\\production\\PackageDemo\\ 下:
PackageDemo\\JavaB.classPackageDemo\\KotlinB.classPackageDemo\\a\\JavaA.classPackageDemo\\a\\b\\KotlinAKt.classJava 和 Kotlin 的 package 语句指定源文件编译之后的路径,与源文件的路径无关。不过,一般情况下我们最好把 package 语句与源文件路径写成一致,这样不仅使文件层次清晰起来,还能减少出错的机率(忘记写 package 语句导致根目录类出现同名冲突的我 -_-)。
我想,题主之所以提出这个问题,主要是因为 Kotlin 库中有很多源文件路径与 package 语句不一致的现象,不用担心这个问题,该怎么用还怎么用,那帮人都是闲得

■网友
泻药。
【为啥kotlin允许包名和文件所在路径不一致】 这样你就算在移动了源码文件结构(而没有改其他文件的 import 和这个文件的 package ), it still compiles
(逃


    推荐阅读