与Is it possible to create a new operator in c#?类似,是否可以为Java创建自己的运算符?我最初会说不,因为你不能重载,但是再一次,String支持+和+ =(在执行时隐式地通过StringBuilder等)。
答案 0 :(得分:12)
不,Java不能以这种方式扩展。您无法添加运算符,甚至无法进一步重载内置运算符(如+
) - 即使像BigInteger这样的标准库类也必须使用add()
等方法而不是+
之类的运算符。 1}}。
Scala(另一种静态JVM语言)通过使用方法调用而不是内置运算符,并允许方法名称中的任何字符来解决这个问题,因此您可以定义看似运算符的新方法,即
a + 1
是语法糖:
a.+(1)
答案 1 :(得分:7)
Java不允许这样做。
但是,如果你想在JVM(以及其他Java代码)上运行你的代码时想要实现这种语法,那么你可以看看Groovy,它有operator overloading(和你一起使用)也可以使用DSL来获得与使用自定义运算符类似的短语法。
请注意,定义自定义运算符(不仅仅是重载)在任何语言中都是一个大问题,因为你必须能够以某种方式改变词法分析器和语法。
答案 2 :(得分:0)
不,您不能为Java中的运算符重载特殊符号。
答案 3 :(得分:0)
正如所有其他人所说,你绝对不能在Java中添加新的运算符。但是,其他对Java友好的JVM语言(如Groovy)将允许您从现有的运算符标记定义新的运算符。
答案 4 :(得分:0)
没有。阅读这篇文章,了解为什么它们不应该是: http://java.dzone.com/articles/why-java-doesnt-need-operator
您可以使用其他语言(如Scala)在Java平台上实现此目的。 - https://stackoverflow.com/a/1991348/1342121
答案 5 :(得分:0)
不。 Java不允许运算符重载。您可以在此处查看更多讨论:https://javarevisited.blogspot.com/2011/08/why-java-does-not-support-operator.html