java:链式方法调用混淆

时间:2014-05-04 04:53:29

标签: java android

return new AlertDialog.Builder(getActivity())
    .setTitle(R.string.date_picker_title)
    .setPositiveButton(android.R.string.ok, null)
    .create();

我不明白为什么我可以从“setTitle”的结果中调用“setPosiveButton”。 我检查了API文档。这两种方法都属于AlertDialog.Builder。 http://developer.android.com/reference/android/app/AlertDialog.Builder.html

那为什么可以这么称呼呢?

4 个答案:

答案 0 :(得分:1)

答案在您链接的同一份文件中。返回对象的描述是:

  

<强>返回
  此Builder对象允许链接调用set方法

答案 1 :(得分:1)

您正在返回Builder return new AlertDialog.Builder()的实例。调用构造函数后调用的那些方法将返回刚刚创建的实例。该方法如下所示:

public AlertDialog.Builder setTitle(String title) {
    //do something with title
    return this;
}

这就是为什么它有效。由于该方法返回实例,并且您可以直接从实例调用方法(您不需要引用,您可以执行new Class().method()),这是可能的。

答案 2 :(得分:0)

这是&#34; builder&#34;的应用程序。设计模式。它用于使构建对象更容易一些。我们使用构建器而不是具有许多参数的构造函数或许多不同的重载构造函数。任何&#34; set&#34;的结果构建器中的方法返回构建器本身,以便我们逐步构建内容。最后,当我们设置了我们想要设置的所有参数时,我们调用&#34;创建&#34;实际上实例化&#34; AlertDialog&#34;。

答案 3 :(得分:0)

Builder.setTitle()返回Builder对象。请参阅JavaDoc