首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套方法调用的工作原理

嵌套方法调用的工作原理
EN

Stack Overflow用户
提问于 2013-07-27 13:05:26
回答 2查看 2.8K关注 0票数 1

有人能解释一下这一行代码是如何工作的吗?

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

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

EN

回答 2

Stack Overflow用户

发布于 2013-07-27 13:07:29

这叫做方法链。方法add()实际上返回当前修改的对象的引用或调用该方法的同一类型的新对象。假设a所引用的对象是BigInteger,当您调用a.add(b)时,它返回一个值为a+bBigInteger对象,因此您可以在该对象上再次调用.add(c)

代码语言:javascript
运行
复制
 Rational sum = a.add(b).add(c);
 // is equivalent to
 Rational temp = a.add(b);
 Rational sum = temp.add(c);

不需要方法链接。它只会提高可读性,减少源代码的数量。它是构建fluent接口的核心概念。

示例插图:

这种实践主要在建造者模式中使用,您可以在StringBuilder类中的API本身中找到这种模式。

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

不,您的理解是错误的,a.add(b)意味着您正在调用对象a上的方法add(),并将其传递给对象b的引用。方法a.add(b)返回的结果对象与a具有相同的类型,然后依次调用返回对象上的方法.add(c),传递对象c对该方法的引用。

票数 4
EN

Stack Overflow用户

发布于 2013-07-27 13:08:58

它的流畅链

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

在您的示例中,a.add(b)返回一些calss/接口,然后对其调用add(c),该方法返回您的sum

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17898127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档