gpt4 book ai didi

java - 我们怎样才能拥有一种基于 JVM 的动态类型语言?

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:58 25 4
gpt4 key购买 nike

我们有 JythonJRubyGroovy,它们是动态类型的并在 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 是一种具有(纯)静态类型的强类型语言。但是大多数现代编程语言至少支持某种级别的运行时类型检查。许多动态类型语言要么有可选的静态类型,要么有使用类型推断来发现与类型相关的错误的开发者工具。

顺便说一句,一种语言既可以是静态类型的,也可以使用类型推断。类型推断应被视为显式类型声明的替代方法,而不是静态类型的替代方法。

关于java - 我们怎样才能拥有一种基于 JVM 的动态类型语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com