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

前端之家收集整理的这篇文章主要介绍了java – 我们如何在JVM上有动态类型的语言?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有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是一种强力类型的语言(纯粹地)静态打字.但大多数现代编程语言至少支持一些级别的运行时类型检查.许多动态类型语言有可选的静态类型,或使用类型引用来开发类型相关错误的开发人员工具.

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

猜你在找的JVM相关文章