Java连接各种方法(不是连接字符串的方法)

时间:2013-03-07 19:48:23

标签: java object methods concatenation

当我写一个有几个空洞的课时:

public class MyObj {
    public void doSomething() { /* does something */ }
    public void doSomethingElse() { /* does something else */ }
    ...
}

我可以使用以下代码:

MyObj myObj = new MyObj();
myObj.doSomething(); // does something
myObj.doSomethingElse(); // does something else

但如果我这样写这个类:

public class MyObj {
    public MyObj doSomething() {
        // do something;
        return this;
    }
    public MyObj doSomethingElse() {
        // do something else;
        return this;
    }
}

我可以使用以下代码完成相同的任务:

MyObj myObj = new MyObj();
MyObj.doSomething().doSomethingElse(); // does something and does something else.

我在JavaScript(jQuery)中看过第二种形式:

$("#myDialog").dialog().focus().mySuperLongNameHomeMadeBullshitFunction().remove();

所以我的问题是,在Java中,使用连接表单或标准的优缺点是什么? (我真的不会改变到第二个,只是好奇,因为我们都是)。

2 个答案:

答案 0 :(得分:4)

Method chaining允许您在单个表达式中调用方法。

这在您不能使用多个语句的情况下非常有用 - 例如,this()和super()。

答案 1 :(得分:0)

使用方法链接可以允许使用流畅的API创建一些DSL并创建更清晰的代码。

它可以让你在完成同样的事情时更简洁,更有意义。