如何在java中添加2个对象

时间:2017-04-21 10:56:31

标签: java

我是Java的新手,我无法在任何地方找到答案,因为我甚至不知道如何搜索它。

我想定义如何将2个对象添加到一起,所以你得到一个新对象,比如你可以添加String" a"和字符串" b"得到" ab"。

我知道这可以通过self.__add__(self, other)在python中完成。 你怎么能用Java做到这一点?

3 个答案:

答案 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);
}