aho*_*der 9 java operator-keyword
类似于是否可以在c#中创建一个新的运算符?,是否可以为Java创建自己的运算符?我最初会说不,因为你不能重载,但是再一次,String支持+和+ =(在执行时隐式地通过StringBuilder等).
DNA*_*DNA 13
不,Java不能以这种方式扩展.你不能添加运算符,你甚至不能进一步重载内置运算符+- 即使像BigInteger这样的标准库类也必须使用诸如add()运算之类的方法+.
Scala(另一种静态JVM语言)通过使用方法调用而不是内置运算符来解决这个问题,并允许方法名称中的任何字符,因此您可以定义看似运算符的新方法,即
a + 1
Run Code Online (Sandbox Code Playgroud)
语法糖是:
a.+(1)
Run Code Online (Sandbox Code Playgroud)
Java不允许这样做.
但是,如果你想在JVM(以及其他Java代码)上运行你的代码时想要实现这种语法,你可以看看Groovy,它有运算符重载(并且你也可以用它来简化DSL)语法与使用自定义运算符具有类似的效果).
请注意,定义自定义运算符(不仅仅是重载)在任何语言中都是一个大问题,因为您必须能够以某种方式改变词法分析器和语法.
| 归档时间: |
|
| 查看次数: |
10506 次 |
| 最近记录: |