我知道String是java.lang中的最后一个类,所以像string类一样可以使用plus(+)运算符追加其他类。
例如,我有一个班级:
public class Foo{
public int x;
public int y;
public Foo(int x,int y){
this.x=x;
this.y=y;
}
public Foo append(int x,int y){
return new Foo(this.x+x,this.y+y);
}
}
现在,是否可以添加两个类:
Foo a=new Foo(2,3),b=new Foo(3,4);
Foo c=a+b;
System.out.println(c.x+" "+c.y);
获得如下输出:
5 7
如果是,我还需要做什么,如果没有,为什么?
答案 0 :(得分:5)
它被称为operator overloading而不是,它在Java中是不可能的。只允许使用经典方法。
答案 1 :(得分:2)
没有Java不允许运算符重载simply because it doesn't need it。
2.2.7没有更多的操作员重载 程序员没有提供重载标准算术运算符的方法。再一次,通过声明一个类,适当的实例变量以及操纵这些变量的适当方法,可以很容易地实现运算符重载的效果。消除运算符重载可以极大地简化代码。
答案 2 :(得分:2)
'多年来,Java团队的部分内容是“运营商超载过于复杂”。这个以及许多其他人明显没有完成家庭作业的决定,这就是为什么我因为蔑视Gosling和Java团队的许多选择而声名鹊起 - 布鲁斯·埃克尔在The Positive Legacy of C++ and Java