为啥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
(逃
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
- 天赐的声音|33岁张雨绮为啥总离婚?看过这些照片就明白了,都是性感惹得祸