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

黑龙江省和城乡建设厅网站手机模板网站模板下载

黑龙江省和城乡建设厅网站,手机模板网站模板下载,上海网站建设外包公司,网站备案负责人一定要法人一.Arrays.asList() 返回的list不能add,remove Arrays.asList()返回的是List,而且是一个定长的List#xff0c;所以不能转换为ArrayList#xff0c;只能转换为AbstractList 原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没…一.Arrays.asList() 返回的list不能add,remove Arrays.asList()返回的是List,而且是一个定长的List所以不能转换为ArrayList只能转换为AbstractList 原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的 下面是一段很简单的测试代码   public class MainFacade {  public static void main(String[] args) {  ListInteger list  Arrays.asList(1,2,3);  list.add(5);  System.out.print(list.toString());  }   }   不过上面的代码会throw出一个UnsupportedOperationException这样的异常   Exception in thread main java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at org.popkit.MainFacade.main(MainFacade.java:14) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)   终其原因是Arrays.asList方法返回的ArrayList是继承自AbstractList同时实现 了RandomAccess和Serializable接口定义如下   private static class ArrayListE extends AbstractListE  implements RandomAccess, java.io.Serializable   我们再来看看AbstractList这个类的定义   public abstract class AbstractListE extends AbstractCollectionE implements ListE    这时我们发现AbstractList这个类的set add remove方法定义如下 public void add(int index, E element) {  throw new UnsupportedOperationException();   }  public E set(int index, E element) {  throw new UnsupportedOperationException();   }  public E remove(int index) {  throw new UnsupportedOperationException();   }   现在知道了它throw UnsupportedOperationException异常的原因了。   通过上面的分析我们知道其实通过asList方法得到的List是只读的那么平时我们怎样避免这样的错误发生我们可以采用如下方法  ListInteger list  new ArrayList(Arrays.asList(1,2,3));   二、Arrays.asList()陷阱 代码如下  Java代码   public static void main(String[] args) {  int[] data  {1,2,3,4,5};  List list  Arrays.asList(data);  System.out.println(列表中的元素数量是  list.size());  }   注意这里输出的数量是1原因是在Arrays.asList中其接收的参数原型其实是泛型变长参数来的而基本类型是不能作为范型的参数按道理应该使用包装类型但这里缺没有报错  因为数组是可以泛型化的所以转换后在list中就有一个类型为int的数组  Java代码   int[] data  {1,2,3,4,5};  List list  Arrays.asList(data);  System.out.println(元素类型  list.get(0).getClass());  System.out.println(前后是否相等data.equals(list.get(0)));   可以看到输出的为元素类型:class [I   因为jvm不可能输出array类型array类型属于java.lang.reflect包通过反射访问  数组的这个类编译时候生成的。所以要改为  Java代码   Integer[] data  {1,2,3,4,5};   List list  Arrays.asList(data);   System.out.println(列表中的元素数量是  list.size());   此外假如如下代码  Java代码   //枚举声明一个星期   enum Week{Sun,Mon, Tue, Wed,Thu,Fri,Sat}       public static void main(String[] args) {  //工作日  Week[] workDays  {Week.Mon, Week.Tue, Week.Wed,Week.Thu,Week.Fri};  //转换为列表  ListWeek list  Arrays.asList(workDays);  //增加周六也为工作日  list.add(Week.Sat);   注意这里用add会出错因为是arrays.aslist中看代码可以看到这里返回的  ArrayList不是原来的传统意义上的java.util.arraylist了而是自己工具类的一个  静态私有内部类并没有提供add方法要自己实现所以这里是出错了因此  除非确信array.aslist后长度不会增加否则谨慎使用     ListString abcArrays.asList(a,b,c),因为这样的长度是无法再add的了
http://www.dnsts.com.cn/news/199674.html

相关文章:

  • 嘉兴网站备案去哪里网站新闻页面设计
  • 网站建设工作报告十堰小程序开发
  • 济南网站建设推广报价wordpress自定义查询分页函数
  • 郑州中扬科技网站建设公司怎么样软件开发详细流程
  • 用织梦怎么做网站wordpress 去google
  • 网站建设公司业务培训wordpress 閱讀 主题
  • 建设网站的可行性分析html期末作业网页代码
  • 个人可以做商城网站吗深圳有哪些做网站公司
  • 网站的营销方案中文网站建设入门
  • 通许网站建设word68网站
  • 企业网站mp4怎么处理wordpress整站下载
  • 备案后网站打不开夜晚必备直播软件
  • 厦门翔安建设局网站网站推广平台
  • 网站建设与维护试卷及答案许昌网站推广公司
  • 网站怎么做pc端盒子杭州网站建设杭州
  • 网站建设与管理基础销售珍珠网站建设策划书
  • 无锡网站制作启泉州建设企业网站
  • 网站技术培训班有哪些种类建网站找哪个平台好呢
  • 网站项目总体设计模板深圳网站建设运营公司
  • 长沙网站建设哪里好网页浏览器英文缩写
  • 深圳最好的网站建设公司排名网站建设中国站需求分析报告
  • 洛阳建设信息网站大连seo外包平台
  • 采购需求网站建设一个域名访问不同的网站
  • 什么是网站维护中沈阳教做网站
  • 有没有做高仿手表的网站ios手机网站建设
  • wordpress整站导出网站改版需要多少钱
  • 如何做移动端网站合肥自助建站
  • 做兼职网站制作一个小型网站
  • 微网站如何做微信支付宝支付宝支付宝网页设计怎么赚钱
  • 全屏网站源码宝格丽官网