C++ 运算符重载的 Java 等价物

标签 java operator-overloading

考虑类

public class Complex 
{
    private double x;
    private double y;

    public Complex(double x , double y)
    {
        this.x = x;
        this.y = y;
    }
}

表示一个复数 x + y*i ,其中 i 是虚部。

我有以下主要内容:

public static void main(String args[])
{
    Complex p1 = new Complex(1 , 2);   // ok 
    Complex p2 = new Complex(3 , 4);   // ok 
    Complex p3 = p1 + p2;   // Not ok , doesn't compile 
} 

第三行 Complex p3 = p1 + p2; 无法编译,因为没有运算符重载 在 java 。它会在 C++ 中工作。

有什么办法解决这个问题(在 Java 中)?

非常感谢

最佳答案

运算符重载在 Java 中是不可能的。相反,您需要做的是实现操作方法。

BigDecimal 是一个很好的例子,说明如何在 Java 中完成此操作:

http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

请注意,BigDecimal 是一个不可变类,当您在 C++ 中拥有这样的运算符重载类时,这通常是一个很好的主意。它使代码更简洁,易于维护。

关于C++ 运算符重载的 Java 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328975/

相关文章:

c++ - 运算符重载问题

oop - R : Use a different base field/corpus 中的运算符重载和类定义

python - Django : Case insensitive matching of username from auth user?

java - 为什么我无法在 Solr 4.10.4 中创建核心 'blog'?

java - 在gradle中为Heroku创建webapp-runner.jar

java.lang.ClassCastException : ish. message.Message 无法转换为 android.app.Application

java - JAX-WS、Websphere AS 8.5 和 XML 数字签名

java - Vaadin 多语言 portlet 组件标题

c++ - 重载 operator= 时返回引用和值有什么区别?

类和 vector 的 C++ 输入运算符重载