到J2SE1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了。尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但是这仍然不能达到让实参数量任意变化的目的。
然而,有些方法的语义要求它们必须能接受个数可变的实参——例如著名的main方法,就需要能接受所有的命令行参数为实参,而命令行参数的数目,事先根本无法确定下来。
对于这个问题,传统上一般是采用“利用一个数组来包裹要传递的实参”的做法来应付。
1.用数组包裹实参
“用数组包裹实参”的做法可以分成三步:首先,为这个方法定义一个数组型的参数;然后在调用时,生成一个包含了所有要传递的实参的数组;最后,把这个数组作为一个实参传递过去。
这种做法可以有效的达到“让方法可以接受个数可变的参数”的目的,只是调用时的形式不够简单。
J2SE1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。
Varargs的含义
大体说来,“Varargs”是“variablenumberofarguments”的意思。有时候也被简单的称为“variablearguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍微有点模糊。
2.定义实参个数可变的方法
只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”(即“...”,英文里的句中省略号),就可以让它和不确定个实参相匹配。而一个带有这样的形参的方法,就是一个实参个数可变的方法。
清单1:一个实参个数可变的方法
private static int sumUp(int... values) {}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Ruby加密技术:如何改变数据存储方式?
- 在 Java 中,arraycopy 方法的具体用法是什么?(java中arraycopy的用法是什么)
- 如何巧妙利用 Java Map 来实现缓存功能?(如何利用Java Map实现缓存功能)
- Java 中 zlib 库的使用技巧有哪些?(Java中zlib库的使用技巧)
- 在 Java 中如何将 Object 转换为自定义类型?(java怎么将Object转换为自定义类型)
- Java多线程编程中常见错误有哪些?如何解决?(Java多线程编程常见错误及解决方法)
- 在 eclipse 中如何进行 java 代码规范设置?(eclipse下java代码规范设置)
- 如何在 Java 分布式架构中避免错误?(Java分布式架构如何避免错误)
- 如何利用 Java 多线程来进行数据统计?(怎么用java多线程统计数据)
- 掌握Ruby加密与解密:确保数据安全的关键步骤