请您能告诉我是否有可能在Java中重载操作符?如果它在Java中被使用,你能告诉我它是什么吗?
当前回答
操作符重载在Java中用于String类型的连接:
String concat = "one" + "two";
但是,您不能定义自己的操作符重载。
其他回答
只需在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不允许操作符重载。
然而,有一个例外。String对象的+和+=重载。
不,Java不支持用户定义的操作符重载。Java中唯一接近于“自定义”操作符重载的方面是对字符串的+处理,它要么导致常量的编译时连接,要么导致使用StringBuilder/StringBuffer的执行时连接。你不能定义你自己的操作符,它们以同样的方式工作。
对于支持运算符重载的类java(和基于jvm)语言,可以参考Kotlin或Groovy。或者,您也可以使用Java编译器插件解决方案。
除了所有人都指出+对于字符串是重载的,-对于浮点运算和整数运算也是重载的,*和/也是。
(编辑) %对于浮点数也是重载的,这对于具有C或c++背景的人来说可能有点惊讶。
操作符重载在Java中用于String类型的连接:
String concat = "one" + "two";
但是,您不能定义自己的操作符重载。
推荐文章
- 在流中使用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