Java语法 - 这段代码是什么意思?

1 java syntax

我开始学习使用Java的Android编程,主要来自在线Android文档.我也浏览了几本书,但它们似乎没有解决这个问题:Java语法的一个特点,我已经多次遇到过,这对我来说是一个谜.以下是关于联系提供程序文档的大约一半的示例

http://developer.android.com/guide/topics/providers/contacts-provider.html

我已删除评论以整理代码段:

op = 
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
Run Code Online (Sandbox Code Playgroud)

我想这就是一个声明.令我困惑的是那些看起来好像属于Visual Basic"with clause"的"点运算符".我在哪里可以找到这一切意味着什么?

rad*_*dai 6

你正在看一个构建器模式,其中每个这样的*方法的返回值是构建器本身(或者对象,如果它不是构建器的确切).当你想链接很多setter时,或者当底层对象有很多构造函数而你不想让人们使用它时会感到困惑.或者,如下所示fge,当你希望返回的对象是不可变的(因此它不能有setter).

更具体地说,ContentProviderOperation.newInsert()的返回值是一个ContentProviderOperation.Builder,所有人的方法都返回自己.通常这样的配置调用链将以对build()的调用结束,这将产生一个操作.

  • +1它和`new StringBuilder().append(a).append("=").append(b).toString();` (3认同)