嵌套方法调用的工作原理

时间:2013-07-27 13:05:27

标签: java methods

任何人都可以解释这行代码的工作原理:

Rational sum = a.add(b).add(c);

我不明白对象b(这是一个参数)是如何接收方法的?

2 个答案:

答案 0 :(得分:4)

这称为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

背后的核心概念

示例说明:

enter image description here

此练习主要用于Builder pattern,您可以在StringBuilder课程的API本身中找到此模式。

  

我不明白对象b(这是一个参数)是如何接收方法的?

没有您的理解错误,a.add(b)表示您在对象add()上调用方法a并向其传递对象b的引用。方法a.add(b)返回的结果对象与a的类型相同,然后在返回的对象上调用方法.add(c),传递对象{{1}的引用那个方法。

答案 1 :(得分:1)

Its fluent chaining

  

链中的每个方法都必须返回一个类或接口。链中的下一个方法必须是返回类的一部分。

在您的情况下a.add(b)返回一些calss / interface然后在其上调用add(c),该方法会返回您的sum