java - 运算符重载和JVM处理之间的联系

标签 java operator-overloading

我需要对此声明进行专家审查。我在最近的java面试中遇到了这个说法。

Adding Operator overloading to java would have definitely made design more complex than without it, and it might have lead to more complex compiler or slows the JVM .

证明这一点合理吗?

  1. 从上面几行我有两个问题,如果假设 java 中有运算符重载支持,那么它如何减慢 jvm 的速度,因为重载是在编译时解决的,而 jvm 是关于运行时角度的(如果我错了请纠正我)。

  2. 通过制作复杂的编译器,我们可以拥有更多的业务逻辑自由。

最佳答案

一些想法:

(1) 重载并不总是可以在编译时解决。子类可能会覆盖方法,并且在代码执行之前您不知道是否有父类或子类。我们不知道运算符重载是如何实现的,但它可能会有相同的行为。

(2) 我认为这通常是不正确的。添加运算符重载(本质上是语法糖)并不能让您拥有更多的业务逻辑。它可能表达得更简洁,但逻辑是一样的。考虑以下代码,其中 abc 是同一类的实例(即它们不是标量)。逻辑是相同的,但有些人会更喜欢不同的表达方式。

c = a.plus(b);
c = a + b;

关于java - 运算符重载和JVM处理之间的联系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32859062/

相关文章:

java - Spring : how to get values from properties file in Model class

java - 从 JSON 中提取值时遇到问题

C++ operator new 重载,编译错误

c++ - 重载运算符 & 继承 & 模板(一个强大的组合)

c++ - 模板化线性代数 vector 类中出现奇怪的 "Member function not viable"错误

java - 从实例引用 Java 中的静态方法/变量

java - 编写我自己的消费者线程——我没有看到什么?

java ProcessBuilder 不起作用

派生类中的 C++ 赋值运算符

c++ - 将时间戳打印到 ostream 的最简单方法