回答
這叫做method chaining。方法add()
實際上返回當前修改對象的引用或者調用該方法的同一類型的新對象。假設a
所指的對象是BigInteger,當您調用a.add(b)時,它會返回一個BigInteger
對象,其值爲a+b
,因此您可以再次調用該對象的.add(c)
。
Rational sum = a.add(b).add(c);
// is equivalent to
Rational temp = a.add(b);
Rational sum = temp.add(c);
方法鏈不是必需的。它只會潛在地提高可讀性並減少源代碼的數量。這是建立fluent interface背後的核心概念。
樣本圖解:
這種做法大多采用在Builder pattern,您可以在StringBuilder類找到API本身這種模式。
我不明白對象b(哪個是參數)如何接收方法?
沒有你的理解是錯誤的,a.add(b)
意味着您在對象a
調用方法add()
和傳遞對象b
的參考。方法a.add(b)
返回的結果對象與a
類型相同,然後在返回的對象上調用方法.add(c)
,將對象c
的引用傳遞給該方法。
JLS,編譯器或語言設置的鏈接深度是否存在技術限制? – hexafraction
@hexafraction我不知道任何,需要研究。 – NINCOMPOOP
確實存在*可懂度*限制! –
你的情況鏈中的每一方法必須返回一個類或一個接口。鏈中的下一個方法必須是返回類的一部分。
a.add(b)
返回一些CALSS /接口,然後調用上
add(c)
和方法返回的sum
- 1. 如何使用嵌套操作/回調單元測試方法
- 2. 如何從嵌套ajax(成功)方法調用外部方法?
- 3. 重構,嵌套的方法調用
- 4. 嵌套$ .getJSON,調用不工作
- 5. `self`在嵌套方法中如何在ruby中工作?
- 6. 這種方法嵌套如何工作? [TableRowRenderingTip.java]
- 7. 嵌套方法調用客觀c
- 8. 嵌套遞歸方法調用
- 9. HOWTO:嵌套擴展方法調用
- 10. 如何打破調用不同對象的嵌套方法?
- 11. 如何從JRuby調用Java嵌套抽象類的方法?
- 12. 如何調用嵌套接口的方法
- 13. 此方法如何調用工作?
- 14. javascript調用方法如何工作?
- 15. 嵌套的objectForKey調用工作,但等價的valueForKey調用不?
- 16. 嘗試在嵌套方法調用中啓動/創建新事務的EJB中的嵌套方法調用
- 17. 如何嵌套jquery.when調用
- 18. 如何將方法內部嵌套的函數調用到其他方法中
- 19. 嵌套方法
- 20. 裝飾模式問題 - 如何調用嵌套裝飾方法?
- 21. 如何在角度1.x中調用兩次嵌套方法?
- 22. 用嵌套方法鏈接的方法
- 23. 嵌套類C++,如何使外部方法作爲嵌套類的朋友
- 24. 如何嘲笑嵌套方法的Java
- 25. 嵌套類INotifyPropertyChanged的將無法工作
- 26. jQueryUI + jQtree,調用嵌套列表中的方法調用父和子方法
- 27. C++ #include,嵌套如何包含工作?
- 28. Python:如何使嵌套循環工作?
- 29. 如何使嵌套JScrollPanes正常工作?
- 30. 如何嵌套For循環工作
查找「方法鏈」。而對象b沒有收到方法。它被作爲參數傳遞給一個方法。 –