首页 > 其他分享 >List集合转换成数组

List集合转换成数组

时间:2022-12-01 18:23:18浏览次数:43  
标签:lang 转换成 String List Object list 数组 new

我现在有个需求:将File集合转换成MultipartFile数组结构

然后我就开始在网上开启了List转换到数组之旅。

首先来看一个例子

        ArrayList<String> list=new ArrayList<String>();
        list.add("1");
        String[] strings=(String [])list.toArray();
        System.out.println(strings);

然后爆出异常信息:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

不能够由 Object 转换成 String类型

这样写编译没有什么问题,但是运行时会报ClassCastException,这是因为Java中允许向上和向下转型,但是这个转型是否成功是根据Java虚拟机中这个对象的类型来实现的。Java虚拟机中保存了每个对象的类型。而数组也是一个对象。数组的类型是java.lang.Object。把java.lang.Object转换成java.lang.String是显然不可能的事情,因为这里是一个向下转型,而虚拟机只保存了这是一个Object的数组,不能保证数组中的元素是String的,所以这个转型不能成功。数组里面的元素只是元素的引用,不是存储的具体元素,所以数组中元素的类型还是保存在Java虚拟机中的。

        ArrayList<String> list = new ArrayList<String>();
        list.add("1");
        String[] array2 = list.toArray(new String[list.size()]);
        System.out.println(array2);
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }

打印输出:

[Ljava.lang.String;@1b6d3586
1

然后来到了我的需求中来,但是由File的List集合到MultipartFile数组

List<MultipartFile> multipartFileList = new ArrayList<>();

MultipartFile[] multipartFiles = new MultipartFile[size];

我是利用这种方式来解决的。

但是我最开始想到的是MultipartFile是接口,肯定不能够通过new的方式来进行创建。

但是这么来做确实是可行的,因为创建数组内存空间中多了一块区域来进行保存数组中的数据类型。

而对应的空间中只需要保证保存的是对应的类型或者是子类型即可。

标签:lang,转换成,String,List,Object,list,数组,new
From: https://www.cnblogs.com/likeguang/p/16942272.html

相关文章

  • vue2 数组18 some erver filter reduce axios
    some: return true是固定写法,终止some循环 erver: filter:   优化写法:arr.filter(item=>item.state).reduce((累加的结果,当前循环项)=>{},初始值)拿上......
  • Go--求数组奇偶数之和
    packagemain//申明main包import"fmt"//导入fmt标准库funcmain(){arr:=[...]int{01,11,22,33,44,55,66,77,88,99,98,87,76,65,54,43,32,......
  • js 将长度不确定的数组分割成n个一组的数组
    代码实现:consttransSliceImg=(imgs,num)=>{letnewImgs=[]returnimgs.reduce(function(pre,item,index,imgs){varbegin=index*num;......
  • Date转换成LocalDateTime类型
    importjava.time.Instant;importjava.time.LocalDateTime;importjava.time.ZoneId;importjava.util.Date;publicstaticvoidmain(String[]args){D......
  • iOS学习之 plist文件的读写
    在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢?它全名是:PropertyList,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此......
  • Js 数组筛选重复项
    js数组去重复:Array.prototype.distinct=function(){vararr=this,result=[],i,j,len=arr.length;for(i=0;i<len;......
  • numpy获取数组最大值和索引
    他俩都是在60频率但是不清楚每个频率的振幅分布在哪。importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdimporttorchimportnumpyasnpdf=......
  • list定义与方法使用
    #一、list列表#语法:[元素,元素,...]#1.定义一个listmy_list=['杰伦','学友','德华']print(my_list)print(type(my_list))#2.定义一个嵌套listmy_list=[[1,2,3],[4......
  • delphi 让TActionList中的sender指向事发对象
    故事这样的:我有一批按钮需要共同一个点击事件,本来是按最普通的方法,批选了这些按钮,然后双击click事件,然后写代码,最主要的是这句:iTag:=TControl(Sender).Tag;......
  • 数组
    #普通数组:只能使用整数作为数组索引#普通数组 一次赋一个值 array1[0]=pear array1[1]=apple 一次赋多个值 array2=(tomjackalice) array3=(`cat/etc/passwd`)......