JVM引用的类型转换为何不安全
【JVM引用的类型转换为何不安全】 你说的没有问题。这是弱类型语言的特点。Java它的自我定位就是强类型语言。var theHighAvailability= 99.9999%;强类型语言在速度上略逊色于弱类型语言,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。
正因为强类型,有些问题在编译期间就能检查出来,而弱类型语言不同,在运行期间总是容易出现各种各样的问题,并且出现的比较迟。
举一个不恰当的例子:有时候就像医疗诊断,前面诊断的早,后面更容易治好。而前面漏诊,不经常体检的话,后面出了大问题再查出来,已经快治不好了。
而有些时候,像考试测验,到了期末考试的时候发现,这门课没学好,要更加努力学习。中间出了问题,都不算严重,就是挂科了还能补考嘛。
工业级的工程项目,当然要繁琐而严格。不然呢,等房子快盖好得时候墙裂了就尬了。
■网友
首先,如果抛开编译器和虚拟机,确实可以引用任何“类型”。在编译阶段,如果你把一个父类引用赋值给子类,编译器会通过类型检查报错,不让你通过编译。如果你加上了强制类型转换,就可以骗过编译器。在运行阶段,虚拟机在执行强制转换指令(字节码)时肯定会做继承检查,如果不通过扔类型转换异常。想想如果不做这个检查,那么在代码里调用了这个被错误转换的对象的方法时,虚拟机执行invokevirtual指令时,会先从操作数栈取出引用得到引用指向的真实对象,然后从下到上搜索方法表,这时候就会因为找不到方法扔nosuchmethodexception。如果这样的话,程序猿在看到这个异常后是很难定位到哪里出问题的。因此JVM在强制转换那一步就扔异常,从而阻止代码执行。在地铁上码的字,有问题的话请指正
■网友
我觉得是考虑将运行时异常尽量转换为编译时的警告,让你清楚的思考你在做什么,你需要什么类型。动态类型与静态类型的一大区别就在这,静态类型更安全,但是编写也更繁复。
推荐阅读
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
- 咋自己发布网站
- 为啥房多多没像滴滴一样火?
- 趣头条|实用的代步工具,第三代哈弗H6!
- 补水|安全又补水,妈妈们都抢着用!这款给孩子用的高性价比面霜
- ibeacon目前在国内有已经应用或者商用的产品案例吗
- 《亿万》第九集里,法官用的这个搜索引擎是啥
- 新车|靠谱省油又耐用的品牌将推新款SUV,双色车身很帅气
- 怎样看待微软校招笔试使用的评测系统并不使用自家的产品
- 怎样统计工程中未使用的java类
