我是Java的新手,我无法在任何地方找到答案,因为我甚至不知道如何搜索它。
我想定义如何将2个对象添加到一起,所以你得到一个新对象,比如你可以添加String" a"和字符串" b"得到" ab"。
我知道这可以通过self.__add__(self, other)
在python中完成。
你怎么能用Java做到这一点?
答案 0 :(得分:2)
您正在寻找的东西称为运算符重载。它存在于某些语言中,但在Java中却没有。
你能做的最好的事情是在类中定义一个方法add(),然后像这样使用它:
object1.add(object2);
我知道它们之间看起来更好看,但这会使编译变得更复杂。
答案 1 :(得分:1)
除了java.lang.String
被视为特殊情况 1 之外,Java不允许您定义 +
的行为任意类型,或者实际上任何其他运算符,就像在C ++或Scala等某些语言中一样。换句话说,Java不支持运算符重载。
最好的办法是建立像add
& c这样的功能。在这里呼吁先例:例如,看看Java人员如何使用BigInteger
完成它。遗憾的是,无法定义函数的优先级,因此必须使用很多括号来告诉编译器如何评估表达式。由于这个原因,我没有将Java用于任何严肃的数学应用程序,因为甚至一个简单的等式的实现很快变成了一个难以理解的混乱 2 。
1 这在某些方面弊大于利:例如考虑1 + 2 + "Hello" + 3 + 4
。此编译时常量表达式是一个值为3Hello34
的字符串类型。
2 请注意,C ++用于模拟电影中的虫洞的引力透镜效应" Interstellar"。我挑战任何人用不支持运算符重载的语言来做到这一点!见https://arxiv.org/pdf/1502.03808v1.pdf
答案 2 :(得分:0)
Java不允许您覆盖运算符。 String
是一个允许此功能的特殊情况。
您可以做的是添加add
函数,如下所示:
public YourObject add(YourObject yourObject){
return new YourObject(this.propertyToAdd + yourObject.propertyToAdd);
}