加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 我们如何在JVM上有动态类型的语言?

发布时间:2020-12-14 06:05:52 所属栏目:Java 来源:网络整理
导读:我们有Jython,J Ruby,Groovy,它们是动态类型的并且可以通过JVM运行.我明白这些语言编译为字节码. 其他语言如Scala支持类型推断,并且清楚地说,编译器为我们推断了类型. 但Java是一种静态语言,它编译为字节码,这是否意味着字节码支持动态输入? 例如在Java中,
我们有Jython,J Ruby,Groovy,它们是动态类型的并且可以通过JVM运行.我明白这些语言编译为字节码.

其他语言如Scala支持类型推断,并且清楚地说,编译器为我们推断了类型.

但Java是一种静态语言,它编译为字节码,这是否意味着字节码支持动态输入?

例如在Java中,我们需要在编译时声明变量类型,永远不会改变它.但是,在Python的情况下,我们不必声明一个类型,但是我们可以在运行时将任何类型的值分配给同一个变量.

动态打字如何在静态语言上工作?

解决方法

But Java is a static language and it compiles to bytecode,does this mean bytecode supports dynamic typing?

是的,这意味着.

你看到Java不是一种完全静态类型的语言.每当将对象从类型转换为子类型时,JVM将执行动态(运行时)类型检查,以检查对象是否是子类型的实例.使用instanceof是动态类型检查的另一个例子.

当您使用反射API时,也可以使用动态类型检查,即使使用泛型.

How does the dynamic typing work over a static language?

它是一种纯粹的静态类型检查语言,然后它不.例如,Pascal是一种强力类型的语言(纯粹地)静态打字.但大多数现代编程语言至少支持一些级别的运行时类型检查.许多动态类型语言有可选的静态类型,或使用类型引用来开发类型相关错误的开发人员工具.

顺便说一下,语言可以是静态类型和使用类型推断.应该将类型推断视为显式类型声明的替代方法,而不是静态类型的替代方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读