是否可以在Java中创建自定义运算符?

时间:2012-04-23 20:40:46

标签: java operator-keyword

Is it possible to create a new operator in c#?类似,是否可以为Java创建自己的运算符?我最初会说不,因为你不能重载,但是再一次,String支持+和+ =(在执行时隐式地通过StringBuilder等)。

6 个答案:

答案 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