栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java类名称与嵌套包名称相同

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java类名称与嵌套包名称相同

Java语言允许包标识符 遮盖 类别标识符。在您的情况下, 该类

com.xx.a
遮盖了
com.xx.a

根据Java语言规范:

6.3.2模糊的声明

简单名称可能出现在可能被解释为变量,类型或
名称的上下文中。在这些情况下,第6.5节的规则指定将优先于类型选择变量,并优先于包选择类型。因此,有时可能 无法 通过其简单名称
引用可见类型 或程序包声明。 我们说这样的声明是模糊的。

我必须说,第6.5节中对标识符含义进行分类的规则还很不清楚。

您仍然碰巧拥有违反该规则的库副本的原因是,因为该规则不适用于类文件/ JAR文件和JVM。

这意味着您 可能 在JAR文件中遇到这种命名冲突,但是您永远不会将其视为的输出

javac
。产生了这些类/程序包名称的工具很可能是 代码混淆器
,它产生这种混乱的代码来压缩文件的大小并混淆代码以防止反向工程。


PS。仔细看,它实际上可能是Eclipse方面的一个错误(假设您正在谈论的是IDE)。通过让一个空的包名与一个类名冲突,Eclipse使javac接受的东西窒息了。规范很难遵循,但是从我的观察中可以看出,在这种情况下,javac遵循了规范。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号