Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运算符重载和JVM处理之间的连接_Java_Operator Overloading - Fatal编程技术网

Java 运算符重载和JVM处理之间的连接

Java 运算符重载和JVM处理之间的连接,java,operator-overloading,Java,Operator Overloading,我需要对这一声明进行专家审查。我在最近的java采访中遇到了这种说法 将操作符重载添加到java中肯定会使设计更加复杂 比没有它更复杂,它可能会导致更复杂 编译器,或降低JVM的速度 这是否合理 从上面的几行代码中,我有两个问题,如果假设java中支持操作符重载,那么jvm怎么会变慢,因为重载是在编译时解决的,jvm完全是关于运行时透视图的(如果我在这一点上错了,请纠正我) 通过制作复杂的编译器,我们可以更自由地使用业务逻辑 有几点想法: (1) 重载在编译时并不总是可以解决的。子类可以重写方法

我需要对这一声明进行专家审查。我在最近的java采访中遇到了这种说法

将操作符重载添加到java中肯定会使设计更加复杂 比没有它更复杂,它可能会导致更复杂 编译器,或降低JVM的速度

这是否合理

  • 从上面的几行代码中,我有两个问题,如果假设java中支持操作符重载,那么jvm怎么会变慢,因为重载是在编译时解决的,jvm完全是关于运行时透视图的(如果我在这一点上错了,请纠正我)

  • 通过制作复杂的编译器,我们可以更自由地使用业务逻辑

  • 有几点想法:

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

    (2) 我不认为这是普遍正确的。添加运算符重载(本质上是语法糖)不允许您拥有更多的业务逻辑。它可能表达得更简洁,但逻辑是一样的。考虑下面的代码,其中<代码> a <代码> >代码> b>代码>和<代码> c>代码>是同一个类的实例(即,它们不是标量)。逻辑是一样的,但有些人更喜欢用不同的表达方式

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