考虑类
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/