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

Java类文件的创建是否确定性的?

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

Java类文件的创建是否确定性的?

让我们这样说:

我可以很容易地生成一个完全符合标准的Java编译器,在

.class
给定相同
.java
文件的情况下,它永远不会两次生成相同的文件。

我可以通过调整各种字节码构造或通过简单地在我的方法中添加多余的属性(允许)来做到这一点。

鉴于该 规范 并不 要求 编译器生成的字节对字节相同的类文件,我会 避免依赖 这样的结果。

但是 ,我检查过几次,使用相同的编译器和相同的开关(和相同的库!)编译相同的源文件 确实会 得到相同的

.class
文件。

更新: 我最近偶然发现了关于Java 7 中

switch
on
的实现的一篇有趣的博客文章
String

。在此博客文章中,有一些相关的部分,我将在这里引用(重点是我的):

为了使编译器的输出可预测和可重复,这些数据结构中使用的映射和集合是

linkedHashMap
s和
linkedHashSet
s,而不是just
HashMaps
HashSets
。就给定编译期间 生成的代码的功能正确性而言
使用
HashMap
HashSet
会很好
;迭代顺序无关紧要。但是, 我们发现使
javac
输出不随系统类的实现细节而变化是有益的

这很清楚地说明了这个问题:只要编译器符合规范,就 不需要 以确定性的方式进行操作。但是,编译器开发人员意识到 尝试 通常
是一个好主意(前提是它可能不太昂贵)。 __



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

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

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