当前位置: 首页 > news >正文

第四十二条:慎用可变参数

Java 1.5发行版本中增加了可变参数方法。可变参数方法接受0个或者多个指定类型的参数。

可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法。

这样由于可变参数的方法,可变参数时借助数组实现的的,所有调用可变参数的方法时,我们可以传入若干个参数,也可以传入保存

有若干个参数的数组。

对于可变参数使用,比较典型的一个方法是:Arrays.asList(T. . .   args)

我们调用这个方法时可以这样:  List<Integer>  list =  Arrays.asList(1,2,3);

也可以这样:  Integer[]  i   = new  Integer[]{1,2,3} ;       List<Integer>   list = Arrays.asList(i);

 

需要一点需要注意 当我们给传入一个引用类型数组时,会将数组中的对象分别当成一个对象,存入集合中。

当我们传入一个基本类型的数组时,会将这个数组当成一个对象存入集合中。 

int[]  i  =  new  int[]{1,2,3};

List<int[]>   list  = Arrays.asList(i);    

分析Arrays.asList(T. . .  args)的源码可知,是创建了一个ArrayList,而泛型集合不能保存基本类型,所以程序只能讲基本类型数组当成一个

对象,存进集合,因为不管是基本类型数组还是引用类型的数组,都是引用类型。

 

简而言之,在定义参数数目不定的方法时,可变参数是一个很方便的方式,但是它们不应该被过度滥用,如果使用不当,会产生混乱的结果。

转载于:https://www.cnblogs.com/wangliyue/p/4487171.html

相关文章:

  • java使用Iterator、for循环同步数据
  • 不要盲目迷信多线程
  • 磁盘的5种卷,RAID—5的修复
  • IOS学习笔记--Objective-C之KVC、KVO
  • Skype for Business实战演练之八:安装Skype for Business Server 2015
  • android intent 传数据
  • java中HashSet详解(转)
  • 当我完善几年前的一个老项目时,我做了哪些改进
  • 简述ASP.NET MVC原理
  • 代码中的良好习惯从点滴做起
  • linux 下配置文件目录/etc/sysconfig
  • RabbitMQ与Redis做队列比较
  • HttpClient模拟客户端请求实例
  • SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理
  • java.io.IOException: invalid header field
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Apache的基本使用
  • Git初体验
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript设计模式系列一:工厂模式
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Promise面试题2实现异步串行执行
  • Python学习之路16-使用API
  • Spring声明式事务管理之一:五大属性分析
  • Sublime text 3 3103 注册码
  • vue.js框架原理浅析
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 算法---两个栈实现一个队列
  • 微信小程序实战练习(仿五洲到家微信版)
  • 怎么将电脑中的声音录制成WAV格式
  • 阿里云服务器如何修改远程端口?
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ![CDATA[ ]] 是什么东东
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #define用法
  • (4)STL算法之比较
  • (C语言)逆序输出字符串
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (数据结构)顺序表的定义
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)甲方乙方——赵民谈找工作
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 表达式计算:Expression Evaluator
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET导入Excel数据
  • .so文件(linux系统)
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @property括号内属性讲解
  • @Transactional类内部访问失效原因详解