@
TWorldIsNButThis 不懂极少说几句好吧,java 的包名是为了 让类名唯一 才这么要求的。
比如 你写了一个 jar 包 有个类叫 StringUtils ,spring 里面也有一个类叫 StringUtils ,当这个 jar 包和 spring 被一起使用的时候,就会出现类名冲突。(千万别跟我杠你不会重复造 StringUtls 的轮子,我只是举个例子,你如果纠结 StringUtils ,那你不妨忽视他,想一个别的名字)
为了解决这个问题,所以出现了 类全名,类全名就是:包名.类名, 类名没办法去规范,总不能限制别人取什么类名吧? 所以只好限制包名了啊, 包名的规范是 倒置的公司域名(或者个人域名)+ 项目名 + 模块名, 域名就把范围限制在了 一个公司 或者个人,项目名 就进一步缩小范围 到团队,模块名 进一步缩小了范围。
就算再怎么蠢,也不至于在一个模块里出现同名类吧? 所以问题得到了解决。
你可能还会说:长就是长,没得洗,ok ,那我问你,go 的 import 后面的那一段短吗? nodejs 的 import 后面那一段短吗?
在源码里面,包名还有另一个身份,那就是目录,你写 go 不用分目录吗? 写 nodejs 不用分目录吗?