编程语言
首页 > 编程语言> > Java和类型安全

Java和类型安全

作者:互联网

在进行JavaJavaScript之间的比较时,MDN JavaScript指南说明了以下内容:

Type safety means, for instance, that you can’t cast a Java integer into an object reference or access private memory by corrupting Java bytecodes.

当然,关于上述陈述的第一部分,当谈到键入类型安全的一般概念时,围绕语言提供某种检查的能力,这种检查消除了与不兼容类型执行的操作可能存在的错误条件(即使上面的例子是天真地考虑到在Java中你可以将原始int封装到引用类型Integer).

但是,声明的第二部分究竟是什么意思呢?

Here讨论了JVM的验证器,确保了一定程度的内存保护 – “仲裁位模式不能用作地址”.

MDN声明的第二部分如何与类型安全相关?

解决方法:

这意味着在Java中,(原则上)无法绕过如何识别类型.在javascript中,可以根据表示一段数据的字节序列来推断类型.在Java中,VM可以防止出现这种情况,以确保作为Foo对象的字节序列不能被视为Bar对象.

关于访问私有成员,这意味着你不能使一系列字节意味着与程序员意图不同的东西,以获得对非预期内容的访问.在运行时,您不能将具有私有成员foobar的Foo类型的对象foo更改为类型为Bar的对象,具有相同的成员,但foobar已公开.
每个对象的类型都以字节代码进行编码,该字节代码由VM在运行时控制.

标签:javascript,java,type-safety
来源: https://codeday.me/bug/20190729/1576603.html