链式方法如何在java中执行?

时间:2016-03-11 05:12:25

标签: java methods chaining

这是我的代码:

samp$count <- with(samp, ave(as.character(user),list(state,user),FUN=seq_along) )

out <- merge(
  samp[samp$state=="joined",c("user","datetime","count")],
  samp[samp$state=="left",c("user","datetime","count")],
  by=c("user","count"), all.x=TRUE
)

out[order(out$count),]

我想知道上面代码/语句的执行层次结构

3 个答案:

答案 0 :(得分:3)

请完成以下几点。

  1. 确定最左边的方法调用将返回什么(让我们称之为x)。
  2. 使用x作为调用第二个(从左侧)方法的对象。如果有 只有两个链式方法,第二个方法调用的结果是 表达式的结果。
  3. 如果有第三种方法,则使用第二种方法调用的结果 调用第三种方法。
  4. 根据您的陈述,执行层次结构如下:

    1. 首先,将调用 method1()这是最左边的方法。
    2. 假设 method1()返回对象“meth”,则第二种方法(从左侧) method2()将被称为meth。 method2( )即可。
    3. 最后,从 method2()返回的对象将用于调用 method3()
    4. 希望它能澄清你的怀疑。

答案 1 :(得分:1)

我用小例子解释上面代码的层次结构。

result = method1().method2().method3();
  

示例:

getYear().toString().trim(); //like method1().method2().method3()
     

首先执行get year(),它返回一个Integer:

2016.toString().trim();
     

Secound将执行整数类的toString()方法   返回一个字符串:

"2016".trim();
     

In Last Trimming string with trim class的trim()方法。

答案 2 :(得分:0)

与此相同:

result1 = method1();
result2 = result1.method2();
result = result2.method3();