java如何实现不固定个数传参
2017-09-15 14:58
197 查看
CreateTime--2017年9月15日14:42:40
Author:Marydon
java如何实现不固定个数传参(定义实参个数可变的方法)
参考链接:原文链接
传统方法:为这个方法定义一个数组型的参数,将不确定的参数放到数组中,把这个数组作为一个实参传递过去
举例:
// 定义带有数组型参数的方法 int getSum(int[] params) { } // 调用 getSum(1,2,3);
方法:借助Varargs机制
J2SE 1.5提供了“Varargs”机制。借助这一机制,可以定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参;
Varargs:"variable number of arguments"
举例:
/** * 求和 * @description * 定义实参个数可变 * @param params * >=0个int类型实参 * @return */ static int getSum(int... params) { // 和 int sum = 0; for (int i : params) { sum += i; } return sum; } // 调用 int sum = Test.getSum(1,2,3); System.out.println(sum); // 6
注意事项:
1.java不支持泛型数组,当数组元素类型不确定时,可以使用Object来定义该数组的数据类型;
2.不能确定的参数个数的方法在定义时,该形参必须放在方法的最后一个参数;
否则,编译报错:The variable argument type int of the method getSum must be the last parameter
3.不能再为这个类定义一个和转化后的方法签名一致的方法;
否则,编译报错:Duplicate method getSum(int[]) in type Test
原因:在class文件编译时实际上将匹配不确定个实参的形参,转化为数组形参,即
static int getSum(int[] params) { // 和 int sum = 0; for (int i : params) { sum += i; } return sum; }
4.传0个实参时,传递过去的是一个空数组,而不是null;
5. 传统方式与这种方式的区别在于:这种方式传参时不必将参数先封装到一个数组里面。
相关文章推荐
- 如何开发一个java开源框架-----Jvn框架之实现浏览器传参后台转成Bean(第四)
- 如何在JAVA中实现一个固定最大size的hashMap
- 如何开发一个java开源框架-----Jvn框架之实现浏览器传参后台转成Bean(第四)
- 如何用java实现在网页中保存html编辑器 编辑好的 html 文件?!(如blog里发文章的时候把要发表的内容以html文件的形式保存到服务器上?)
- java中如何实现表格的多表头显示
- java中如何实现文件打包上传以及自动解压
- 在Java程序,如何实现自适应位置的快捷菜单
- 如何实现在java中实现右键菜单
- 在Java applet中如何实现一个模式对话框?
- 如何在java中实现右键菜单(转载)
- 想对jpeg格式图像进行压缩(不是缩略图),压缩后还是jpeg格式,在java中如何实现
- JAVA中如何用接口实现多继承和多态 (非常好)
- Multi-View在Java如何实现呀?
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
- 如何用JAVA实现在ACCESS表中插入对象?
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- 请教:在java中如何实现线程的函数互斥调用,用synchronized好像实现不了
- 在Java应用程序中如何实现FTP的功能
- CRC32算法学习笔记以及如何用java实现(一)