类似于是否可以在 c# 中创建新运算符?,是否可以为 Java 创建自己的运算符?我最初会说不,因为您不能重载,但话又说回来,String 支持 + 和 += (在执行时通过 StringBuilder 隐式等)。
6 回答
不,Java 不能以这种方式扩展。您不能添加运算符,甚至不能进一步重载内置运算符,例如+
- 甚至像 BigInteger 这样的标准库类也必须使用add()
诸如+
.
Scala(另一种静态 JVM 语言)通过使用方法调用而不是内置运算符来解决这个问题,并允许方法名称中包含任何字符,因此您可以定义看起来是运算符的新方法,即
a + 1
是语法糖:
a.+(1)
Java 不允许这样做。
但是,如果您想实现这种语法,同时能够在 JVM(以及其他 Java 代码)上运行您的代码,您可以查看具有运算符重载的 Groovy (您也可以简称为 DSL)与使用自定义运算符具有类似效果的语法)。
请注意,定义自定义运算符(不仅仅是重载)在任何语言中都是一件大事,因为您必须能够以某种方式更改词法分析器和语法。
不,您不能为 Java 中的运算符重载特殊符号。
正如所有其他人所说,您绝对不能在 Java 中添加新的运算符。但是,其他对 Java 友好的 JVM 语言(如 Groovy)将允许您从现有的操作符标记中定义新的操作符。
不。阅读这篇文章,了解为什么它们不应该是:http: //java.dzone.com/articles/why-java-doesnt-need-operator
您可以使用不同的语言,如 Scala,在 java 平台上实现这一点。- https://stackoverflow.com/a/1991348/1342121
不,Java 不允许运算符重载。您可以在这里看到更多讨论:https ://javarevisited.blogspot.com/2011/08/why-java-does-not-support-operator.html