需求如下:
原来有个类,其中的每个方法实现都返回该类本身。
public class AClass {
private String str="";
public AClass addString(String str) {
this.str = str;
return this;
}
public String getString() {
return str;
}
}
这样就支持链式调用:
AClass a = new AClass();
a.addString().addXXX().addYYY()
现在有一个新的类B想要继承A类的全部方法,同时新增一些方法,如下。
public class BClass extends AClass {
private int num = 0;
public BClass addInt(int num) {
this.num = num;
return this;
}
public int getInt() {
return num;
}
}
但是无奈类A每个返回的是A类,因此,这样声明:
AClass b = new BClass();
b.addInt(3); //报错
b.addString("test");
将B对象指向A,但A中没有addInt()
方法,因此出错。应该改为:
BClass b = new BClass();
b.addInt(3);
b.addString("test");
但这么一来就对链式调用的支持很微妙,即:
BClass b = new BClass();
b.addInt(3).addString("test"); //正确
b.addString("test").addInt(3); //错误
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。