gpt4 book ai didi

java - Java虚拟机是否允许返回类型重载?

转载 作者:行者123 更新时间:2023-12-02 11:02:08 26 4
gpt4 key购买 nike

我经历过这个presentation

幻灯片编号:26 引用该内容

Java language does not allow overloading on return type

Java Virtual machine does allow overloading on return type

这些说法属实吗?如果这两种说法都成立,那么如何使代码可编译以便jvm运行代码?

我有一个关于此主题的 SE 问题:

Java - why no return type based method overloading?

提前致谢。

最佳答案

这些陈述完全正确。

请记住,Java 是两件事 - 一是语言,二是虚拟机。虽然限制语言不允许基于类型的方法重载使 Java 成为一种更易于使用的语言,但 JVM 仍然可以允许这样做以使其更强大。

作为一种语言,Java 有一个编译器,它强制执行一些规则,使 Java 成为一种比允许这样做的语言更简单、更容易的编程语言。为此,它限制了您可以执行的操作,但仅限于 Java 语言本身。在 JVM 上运行 Scala 或 Ruby 之类的东西需要不同的规则和功能,在这个级别上,JVM 提供灵 active 非常重要,正是这种灵 active 使 JVM 取得了如此巨大的成功,以至于可以在如此多的平台和设备上找到它。

在一种可以按返回类型重载的语言中,这将非常容易出错,并且故意决定不支持该功能,以使 Java 成为一种不易出错的编程语言。编译器如何知道您打算调用哪个函数?

另一方面,JVM 是一个低级、高度优化的虚拟机,它的存在是为了运行字节码,而不是 Java。因此,以这种方式限制 JVM 并不明智,因为它应该能够运行根本不是由 Java 生成的字节码。

另一个例子是多重继承,这在 Java 中不可用,但是没有什么可以阻止您编写支持多重继承的语言并将其编译为字节码。它会使您的语言更难使用,并且可能更容易出错,但如果您需要该功能,JVM 不会阻止您。

关于java - Java虚拟机是否允许返回类型重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613075/

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