请您能告诉我是否有可能在Java中重载操作符?如果它在Java中被使用,你能告诉我它是什么吗?
当前回答
不,Java不支持用户定义的操作符重载。Java中唯一接近于“自定义”操作符重载的方面是对字符串的+处理,它要么导致常量的编译时连接,要么导致使用StringBuilder/StringBuffer的执行时连接。你不能定义你自己的操作符,它们以同样的方式工作。
对于支持运算符重载的类java(和基于jvm)语言,可以参考Kotlin或Groovy。或者,您也可以使用Java编译器插件解决方案。
其他回答
只需在Java代码中使用Xtend即可。它支持操作符重载:
package com.example;
@SuppressWarnings("all")
public class Test {
protected int wrapped;
public Test(final int value) {
this.wrapped = value;
}
public int operator_plus(final Test e2) {
return (this.wrapped + e2.wrapped);
}
}
package com.example
class Test2 {
new() {
val t1 = new Test(3)
val t2 = new Test(5)
val t3 = t1 + t2
}
}
在官方网站上,有一个针对每个操作符实现的方法列表!
或者,您可以将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中唯一接近于“自定义”操作符重载的方面是对字符串的+处理,它要么导致常量的编译时连接,要么导致使用StringBuilder/StringBuffer的执行时连接。你不能定义你自己的操作符,它们以同样的方式工作。
对于支持运算符重载的类java(和基于jvm)语言,可以参考Kotlin或Groovy。或者,您也可以使用Java编译器插件解决方案。
您自己不能这样做,因为Java不允许操作符重载。
然而,有一个例外。String对象的+和+=重载。
与c++不同,Java不支持用户定义的操作符重载。重载是在java内部完成的。
我们可以用+(加号)为例:
int a = 2 + 4;
string = "hello" + "world";
这里,plus将两个整数相加并连接两个字符串。因此,我们可以说Java支持内部操作符重载,但不支持用户定义的操作符重载。
推荐文章
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- 如何在Java中打印二叉树图?
- String.format()在Java中格式化双重格式
- com.jcraft.jsch.JSchException: UnknownHostKey
- Java中的操作符重载
- 如何加速gwt编译器?
- 在Hibernate中重新连接分离对象的正确方法是什么?
- 应该……接住环内还是环外?