请您能告诉我是否有可能在Java中重载操作符?如果它在Java中被使用,你能告诉我它是什么吗?


当前回答

不,Java不支持用户定义的操作符重载。Java中唯一接近于“自定义”操作符重载的方面是对字符串的+处理,它要么导致常量的编译时连接,要么导致使用StringBuilder/StringBuffer的执行时连接。你不能定义你自己的操作符,它们以同样的方式工作。

对于支持运算符重载的类java(和基于jvm)语言,可以参考Kotlin或Groovy。或者,您也可以使用Java编译器插件解决方案。

其他回答

Java不允许操作符重载。首选的方法是在类上定义一个方法来执行动作:a.add(b)而不是a + b。你可以在这里看到Java从C语言中删除的其他部分的摘要:从C和c++中删除的特性

或者,您可以将Java编写为Groovy并重载这些函数来实现您想要的功能

//plus() => for the + operator
//multiply() => for the * operator
//leftShift() = for the << operator
// ... and so on ...

class Fish {
    def leftShift(Fish fish) {
        print "You just << (left shifted) some fish "
    }
}


def fish = new Fish()
def fish2 = new Fish()

fish << fish2

谁不想成为/使用groovy呢?: D

不,你不能以同样的方式在Java中使用编译好的groovy jar。对于Java来说,这仍然是一个编译错误。

可以尝试Java操作符重载。它有自己的局限性,但如果您真的想使用操作符重载,那么值得一试。

不,Java不支持用户定义的操作符重载。Java中唯一接近于“自定义”操作符重载的方面是对字符串的+处理,它要么导致常量的编译时连接,要么导致使用StringBuilder/StringBuffer的执行时连接。你不能定义你自己的操作符,它们以同样的方式工作。

对于支持运算符重载的类java(和基于jvm)语言,可以参考Kotlin或Groovy。或者,您也可以使用Java编译器插件解决方案。

您自己不能这样做,因为Java不允许操作符重载。

然而,有一个例外。String对象的+和+=重载。