在编程中,我们可以经常遇到这样一种场景:一个实例不断调用它自身的方法,像一条链条一样进行调用
这样的调用你可能在Ajax中,在页面中添加标签:
$("<p>").append($("<span>").text(list[i].name)).appendTo("#result");
也可能在HQL的查询语句中:
User loginUser = (User)session.createQuery("from User where username=? and password = ?")
.setParameter(0, user.getUsername()).setParameter(1,user.getPassword())
.uniqueResult();
那么,怎么样实现链式调用呢?
- 需要实例化一个对象
- 对要进行链式反应的方法,设置返回类型为该实例对象
演示:
public class Chain { public Chain(){} public Chain show(){ System.out.println("链式调用..."); //返回该实例对象 return this; } } //测试 @Test public void test(){ Chain chain = new Chain(); chain.show().show(); } //运行结果 链式调用... 链式调用...
最后,总结一下链式调用可以应用的场景:
1.一个实例的对象需要多次赋值
2.没有特别要求方法的返回类型,要求得到调用后的实例类
3.在一个事务中,需要进行执行连续不间断的原子操作