java中有一种我无法理解的语句,甚至没有通过谷歌搜索找到任何内容。我想分享一个我写的例子,但不理解语言结构:
MvcResult result = this.mockMvc.perform(MockMvcRequestBuilders.post("/user_sessions/first")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"username\":\""+username+"\",\"password\":\""+password+"\"}"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
我不明白contentType,content,Expect和andReturn是什么。它们显然是功能,但我怎么能像这样称呼它们。他们属于哪个班级?总的来说,我对这里的结构非常困惑。
谢谢。
答案 0 :(得分:5)
您在这里看到的被称为流畅的界面。流畅的接口是一种通过级联方法调用来帮助提高代码可读性的机制。当你创建一个方法时,返回值是类的返回值,因此在伪代码中,这将是 -
class Foo {
private String baa;
private String moo;
public Foo setBaa( String baa ) {
this.baa = baa;
return this;
}
public Foo setMoo( String moo ) {
this.moo = moo;
return this;
}
}
注意:使用this作为返回值来表明我们正在返回当前的foo实例。这将允许以下行为 -
Foo test = new Foo();
test.setBaa( "baa" ).setMoo( "moo" );
如果您想了解有关Fluent界面的更多信息,请查看http://en.wikipedia.org/wiki/Fluent_interface,其中提供了相当深入的解释。
答案 1 :(得分:1)
这样做是为了提高可读性。你也可以把它写成:
result = this.mockMvc.perform(MockMvcRequestBuilders.post("/user_sessions/first").contentType(MediaType.APPLICATION_JSON).content("{\"username\":\""+username+"\",\"password\":\""+password+"\"}")).andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
所有这些方法都返回对象,并在返回的对象上调用以下方法。
答案 2 :(得分:0)
我认为你与你的代码段相混淆
MvcResult result = this.mockMvc.perform(MockMvcRequestBuilders.post("/user_sessions/first")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"username\":\""+username+"\",\"password\":\""+password+"\"}"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
看一下它没有以semi colon
结尾的第一行,这意味着该行没有被终止。
至于SURESH ATTA的回答。它是方法链接,它们都属于MvcResult并且取决于函数的返回类型。
你很困惑,每一行都以dot
开头,然后是函数名。这可能是因为你的IDE的格式化程序。如果行太长,格式化程序会移动它下面的下一个函数。