2012-01-23 56 views
2
Objectname.methodone() 
.methodtwo() 
.methodthree() 
.methodfour(); 

發生難道這些上述聲明一樣​​我不知道在這個Java代碼塊

Objectname.methodone(); 
Objectname.methodtwo(); 
Objectname.methodthree(); 
Objectname.methodfour(); 

感謝,

+0

你可能會覺得這很有趣:http://stackoverflow.com/questions/2872222/how-to-do-method-chaining-in-java-o-m1-m2-m3-m4 – Mudassir

回答

0

沒有它不喜歡它是因爲

Objectname.methodone().methodtwo().methodthree().methodfour(); 

類似於

result = method1().method2(). ........ method n() 

其稱爲方法鏈式

參閱Method chaining in Java

class Person 
{ 
     private final String name; 
     private int age; 

     public Person setName(final String name) { 
       this.name = name; 

       return this; 
     } 

     public Person setAge(final int AGE) { 
       this.age = AGE; 

       return this; 
     } 

     public void introduce() { 
       System.out.println("Hello, my name is " + name + " and I am " + age + " years old."); 
     } 

     // Usage: 
     public static void main(String[] args) { 
       Person person = new Person(); 
       // Output of this sequence will be: Hello, my name is Peter and I am 21 years old. 
       person.setName("Peter").setAge(21).introduce(); 
     } 
} 

源: - http://en.wikipedia.org/wiki/Method_chaining

0

不一定,methodtwo上調用的的返回值在methodtwo等的返回值上調用0和methodthree。他們不(必然)在同一個對象上被調用。

相對應的是:

MethodOneReturnType x = object.methodone(); 
MethodTwoReturnType y = x.methodtwo(); 
MethodThreeReturnType z = y.methodthree(); 
0

這取決於什麼這些方法返回。方法2在方法返回時被調用。如果methodone返回Objectname,那麼它們是相同的。

2

取決於methodonemethodtwo,methodthreemethodfour的退貨類型。發生了什麼事是您撥打methodoneObjectname,methodtwo上返回類型methodone等等。

如果methodonemethodfour都返回this,那麼是的,它會是一樣的。

這被稱爲method chaining

1

也許,如果每個方法的實現以return this;結尾,以便可以像這樣鏈接調用。但有可能每個對象返回一個對象的引用,然後在其上調用「next」方法。

0

它們很可能不會相同。想想比薩建造者。

new PizzaBuilder().withDough("dough").withSauce("sauce").withTopping("topping").build(); 

這建立了完整的披薩。而如果你單獨調用with方法,它將只構建一個部分披薩。