请您能告诉我是否有可能在Java中重载操作符?如果它在Java中被使用,你能告诉我它是什么吗?
当前回答
您自己不能这样做,因为Java不允许操作符重载。
然而,有一个例外。String对象的+和+=重载。
其他回答
Java不允许操作符重载。首选的方法是在类上定义一个方法来执行动作:a.add(b)而不是a + b。你可以在这里看到Java从C语言中删除的其他部分的摘要:从C和c++中删除的特性
操作符重载在Java中用于String类型的连接:
String concat = "one" + "two";
但是,您不能定义自己的操作符重载。
或者,您可以将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来说,这仍然是一个编译错误。
与c++不同,Java不支持用户定义的操作符重载。重载是在java内部完成的。
我们可以用+(加号)为例:
int a = 2 + 4;
string = "hello" + "world";
这里,plus将两个整数相加并连接两个字符串。因此,我们可以说Java支持内部操作符重载,但不支持用户定义的操作符重载。
可以尝试Java操作符重载。它有自己的局限性,但如果您真的想使用操作符重载,那么值得一试。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap