【发布时间】:2010-09-14 17:32:05
【问题描述】:
我正在实现一些数学课程,并且第一次发现了 Java 中的问题(繁琐且重复的代码),而这些问题我真的无法通过 Cleaver 编码来解决。运算符重载会非常方便,而且 Groovy 还可以做得更好(我也可能会在某个时候尝试 Scala)。
所以我仍在用 Java 编写主要类(现在是 Complex 和 Matrix),但我打算从 Groovy 中使用它们。
我更改了一些方法的名称 (.add) 以利用运算符重载 (.plus)。
现在,我的类与“Number”基类的交互非常好,所以我可以使用:
complex.add(number); //or
complex = complex + number;
并得到一个很棒的答案,但我不能使用:
complex = number + complex
由于 number 不理解 .add(Number),即使它理解了,如果它被证明是一个复杂的数字,它也不知道如何处理。
我可以写一个number.plus(complex)并添加到number界面吗?代码实际上很简单,我可以把它倒过来:
Number plus(complex) {
return complex.plus(this);
}
这适用于所有 number 类型的东西,但我不知道 Groovy 是否可以在事后将其移植到 number 接口。 (另外,Number 和 Complex 在 Java 中,所以我把它看作是 groovy 的插件)。
还有什么建议吗?我应该放弃并学习 Scala 吗?
哦,我意识到可能已经有一些软件包可以做到这一点,但其中一部分只是学习数学,我正在研究量子计算文本并正在实施练习。
【问题讨论】:
标签: java groovy operator-overloading