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

被黑的网站建设银行网站能买手机

被黑的网站,建设银行网站能买手机,商城开发哪家好,南京市建设发展集团有限公司网站临近年终#xff0c;项目交付排期比较紧张#xff0c;导致很多时候#xff0c;Code Review 往往是走马观花#xff0c;没有严格执行。最近#xff0c;一个实习生就产生了一个十分低级的代码BUG。笔者感觉这个问题#xff0c;对于实习生#xff0c;尤其是刚入职的 应届 J…临近年终项目交付排期比较紧张导致很多时候Code Review 往往是走马观花没有严格执行。最近一个实习生就产生了一个十分低级的代码BUG。笔者感觉这个问题对于实习生尤其是刚入职的 应届 Java 开发工程师具有一定的普遍性。因此和大家分享一下。 问题背景 项目中有个配置默认是3个属性值。要求开发先读取这3个配置然后从数据库中提取所有的数据如果数据库中的数据和默认配置不同的话就要增加上。很自然的我们的实习生执行了下面的判断逻辑。 public static String[] INFO new String[]{weibo_name, weibo_age}; public static ListWeiInfoBean getAllWeiboInfo(String str) {ListString infoList Arrays.asList(INFO);//...代码逻辑省略infoList.add(((JSONObject) itemJson).getString(item_name));return list; }在UAT环境的时候因为配置不全因此 getAllWeiboInfo()函数没有执行。在后续的测试中也没有细究这方面的代码。但是上线后系统直接抛出异常 Exception in thread main java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at com.weibo.service.impl.WeiboServiceImpl.getAllWeiboInfo(WeiboServiceImpl.java:122)排查过程 系统报警后笔者第一时间接手代码并且迅速定位到了问题的所在实习的开发同事错误的使用了Arrays.asList()函数并且进行了增删操作。 在将对应的代码修复后系统恢复正常。 问题分析 在Java编程中Arrays.asList方法是一个常见的工具用于将数组转换为List集合。然而在使用这个方法的过程中有时会遇到一些报错其中一个比较常见的是在尝试向Arrays.asList返回的List中添加元素时抛出UnsupportedOperationException异常。 Arrays.asList方法简介 Arrays.asList是Java中Arrays类提供的一个静态方法它的主要作用是将数组转换为List。该方法接受一个数组作为参数并返回一个包装了该数组的固定大小的List。以下是Arrays.asList方法的基本用法 String[] array {A, B, C}; ListString list Arrays.asList(array); 在上述示例中数组array被转换为一个包含相同元素的List集合list。 Arrays.asList的限制 尽管Arrays.asList方法提供了方便的数组转换功能但它有一个重要的限制返回的List是一个固定大小的List。这意味着通过Arrays.asList返回的List对象不能进行结构上的修改操作例如添加、删除元素等。如果尝试对这个List执行结构上的修改操作就会触发UnsupportedOperationException异常。 UnsupportedOperationException异常的原因 在运行时当尝试向由Arrays.asList返回的List添加或删除元素时会抛出UnsupportedOperationException异常。这是因为Arrays.asList返回的List是一个只读的视图它直接映射到原始数组不允许对其进行结构上的修改。 String[] array {A, B, C}; ListString list Arrays.asList(array);// 尝试添加元素 list.add(D); // 抛出UnsupportedOperationException异常 在这个例子中由于Arrays.asList返回的List是不可变的试图添加元素D导致了UnsupportedOperationException异常。 源码分析 我们直接打开JDK源码进行分析 public static T ListT asList(T... a) {return new ArrayList(a);}// ArrayList的构造函数 public ArrayList(E[] array) {this.a Objects.requireNonNull(array); }在构造ArrayList时传入的数组将直接被引用而ArrayList的实现并没有提供对数组进行修改的方法。因此当尝试在返回的List上执行add、remove等修改操作时就会抛出UnsupportedOperationException异常。 其他使用中的问题 除了增删操作会导致系统报错外Arrays.asList 方法还有其他使用上的问题如果不加以注意就会导致结果和想得到的不同。这里一起提出来方便大家警醒 不要用基础数据类型转换数组 我们直接使用代码作为说明 public static void main(String[] args) {int[] in new int[]{1,2,3};List list Arrays.asList(in);System.out.println(list.size());// 结果是1}上述代码的结果为1这是为什么呢我们还是看一下源码 SafeVarargsSuppressWarnings(varargs)public static T ListT asList(T... a) {return new ArrayList(a);}在源码里Arrays.asList方法的工作原理是将传入的数组作为参数创建一个包装该数组的List。但是由于Java泛型不支持基础数据类型因此对于基础类型数组它会将整个数组作为单一元素添加到List中而不是将数组的每个元素都添加为List的单独元素。 我们需要修改成 int[] intArray {1, 2, 3, 4, 5}; Listint[] intList Arrays.asList(intArray); 原数组修改会导致list同步修改 我们直接使用代码作为说明 public static void main(String[] args) {int[] in new int[]{1,2,3};List list Arrays.asList(in);in[0] 4;System.out.println(list.get(0));// 结果是4}在使用 Arrays.asList 转换数组为列表时生成的列表其实是基于原始数组的视图而不是新的独立副本。这就意味着如果修改原数组会影响到由 Arrays.asList 返回的列表反之亦然。 这种现象的原因在于 Arrays.asList 返回的列表是一个包装了原始数组的固定大小的列表它直接引用原始数组而不是复制数组元素到新的列表中。因此对原数组的修改会在列表中反映出来反之亦然。 如何优雅使用 Arrays.asList 方法 使用ArrayList构造新的可修改List String[] array {A, B, C}; ListString list new ArrayList(Arrays.asList(array)); list.add(D); // 正常执行 通过使用ArrayList的构造函数将Arrays.asList返回的List转换为一个新的ArrayList就可以避免UnsupportedOperationException异常从而可以执行结构上的修改操作。 使用Collections.unmodifiableList方法 String[] array {A, B, C}; ListString list Collections.unmodifiableList(Arrays.asList(array));// 尝试添加元素 list.add(D); // 抛出UnsupportedOperationException异常通过使用Collections.unmodifiableList方法可以将Arrays.asList返回的List包装为一个不可修改的List从而禁止对其进行结构上的修改。 总结 Arrays.asList是一个在Java中方便的数组转换工具是一个经常被开发者使用的方法。但需要注意返回的List是固定大小且不可修改的。在处理需要修改List结构的情况下使用ArrayList构造新的List或者使用Collections.unmodifiableList进行包装是解决问题的常见方法。通过深入理解Arrays.asList方法的特性开发者可以更好地利用这个工具并避免常见的异常情况。通过源码分析我们更清晰地理解了为什么Arrays.asList返回的List是不可修改的以及如何避免相关异常。
http://www.dnsts.com.cn/news/65001.html

相关文章:

  • 上海品牌网站建设公司外国做的福利小视频在线观看网站
  • 大连做网站公司哪家好wordpress按钮无法显示
  • 本地主机做网站服务器宁波外贸公司有哪些
  • 举报个人备案网站做经营性给网站做cdn
  • 资阳市网站seo做网站 如何注册公司
  • 做购物网站那个好河南网站备案代理
  • 怎么自己创建网站或者app宁波营销型网站建设
  • 给一个网站做需求分析网页制作模板
  • 网站建设推广方案策划书一个新的app如何推广
  • 辛集网站建设哪家好宣传型网站功能定位
  • 云南企业网站建设有限公司做html5视频网站
  • 江苏省通信建设交易中心网站蚌埠网站优化
  • 策划公司网站新民网站建设价格咨询
  • 做网站便宜500个企点qq大概多少钱
  • 科技网站 网站建设互联网营销师国家职业技能标准
  • 碧海蓝天网站手机网站搜索框代码
  • 揭阳网站建设公司哪个好只想怎样建设自己的销售网站
  • 赚钱的网站开发项目郑州网站制作生产厂商定制
  • 苏州专业做网站较好的公司有哪些大型网站开发管发
  • 豪车网站建设背景广东深圳地图全图
  • 网站设计上海济南建设工程有限公司
  • 网站互动怎么做wordpress拖动实现
  • 门户网站建设的平台wordpress 读取pdf
  • 查公司备案网站备案十堰建设网站
  • 佛山优化网站公司海尔集团网站是怎么做的
  • wordpress主题淘宝客上海seo外包公司
  • 海丰网站建设白宫 wordpress
  • 企业网站模板php建设银行河北省分行网站
  • 重庆网站建设的意义网站如何做h5动态页面
  • 网站建设平台排名非法集资罪提供网站建设