`
tansitongba
  • 浏览: 480101 次
文章分类
社区版块
存档分类
最新评论

java中toArray用法注意事项

 
阅读更多

java中toArray正确用法有三种,toArray方法都需要带参数:

Java代码 收藏代码
  1. publicstaticString[]vectorToArray1(Vector<String>v){
  2. String[]newText=newString[v.size()];
  3. v.toArray(newText);
  4. returnnewText;
  5. }
  6. publicstaticString[]vectorToArray2(Vector<String>v){
  7. String[]newText=(String[])v.toArray(newString[0]);
  8. returnnewText;
  9. }
  10. publicstaticString[]vectorToArray3(Vector<String>v){
  11. String[]newText=newString[v.size()];
  12. String[]newStrings=(String[])v.toArray(newText);
  13. returnnewStrings;
  14. }

而不带参数的toArray()是不行的,运行时会报ClassCastException异常:

Java代码 收藏代码
  1. publicstaticString[]vectorToArray4(Vector<String>v){
  2. String[]newText=(String[])v.toArray();
  3. returnnewText;
  4. }

原因分析:

toArray有两个方法:

Java代码 收藏代码
  1. publicObject[]toArray(){
  2. Object[]result=newObject[size];
  3. System.arraycopy(elementData,0,result,0,size);
  4. returnresult;
  5. }
  6. publicObject[]toArray(Objecta[]){
  7. if(a.length<size)
  8. a=(Object[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(),size);
  9. System.arraycopy(elementData,0,a,0,size);
  10. if(a.length>size)
  11. a[size]=null;
  12. returna;
  13. }

不带参数的方法,构造并返回一个Object数组对象,这时候向下转型为String数组对象,导致类型不兼容,报错。

而带参数的方法,构造的数组对象类型和参数的类型一致,故不存在转型。


转:http://ocre.iteye.com/blog/1354264


分享到:
评论

相关推荐

    java开发手册

    书中以通俗易懂的语言介绍Java语言,力求做到深入浅出。, 全书共30章,分为5篇。Java基础篇介绍Java的概念、数据类型、运算符、流程控制语句及数组等内容;面向对象篇介绍对象和类、访问控制符、继承、接口、封装类...

    java中字节数组拼接

    使用链式编程写法实现Java中byte数组的拼接。例如byte[] bytes = ByteUtils.get().add(0x41).add(07).add(11).add("15288930000").add(0x45).toArray();更灵活用法请参考Mybytes

    Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    主要介绍了Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析的相关资料,需要的朋友可以参考下

    Java开发手册-华山

    比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2)修改描述112处。比如,IFNULL的判断方式、集合的toArray的数组长度、日志占位符的处理等; 3...

    新版java开发手册(华山版).zip

    比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2.修改描述112处。比如,IFNULL的判断方式、集合的toArray的数组长度、日志占位符的处理等; ...

    list.toArray方法

    NULL 博文链接:https://jiaguwen123.iteye.com/blog/1679345

    阿里巴巴Java开发手册1_5_0.zip

    比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2.修改描述112处。比如,IFNULL的判断方式、集合的toArray的数组长度、日志占位符的处理等; ...

    Java编码规范总结

    修复建议:使用c.toArray(new String[c.size()])。 6.不良实践 - 方法返回boolean类型返回了null。 7.错误用法 - "."用作正则表达式。 修复建议:String的split方法传递的参数是正则表达式,正则表达式本身用到...

    Java开发手册-华山版-1.5.0.pdf

    2019.06.19 《阿里巴巴Java开发手册》时隔一年,发布更新1.5.0华山版。同时,将更名为《Java开发手册》,涵盖史无前例的三大升级 1)鉴于本手册是社区开发者集体智慧的结晶,本版本移除阿里巴巴 Java 开发手册的...

    java压缩文件源码--ZipUtils

    Object[] fileArray = allFiles.toArray(); BufferedInputStream in = null; FileInputStream fis = null; ZipOutputStream zos = null; FileOutputStream fos = null; try { fos = new ...

    java解析json

    java解析json字符串。 commons-beanutils-1.9.0 commons-collections-3.2.1 commons-lang-2.6 commons-logging-1.1.3 ezmorph-1.0.6 json-lib-2.4-jdk15 demo: package com; import java.util.ArrayList;...

    深入理解Java中的容器

    1、容器不是数组,不能通过下标的方式访问容器中的元素2、数组的所有功能通过Arraylist容器都可以实现,只是实现的方式不同3、如果非要将容器当做一个数组来使用,通过toArray方法返回的就是一个数组示例程序:输出...

    对于java map类排序

    Object[] unsort_key = unsort_map.keySet().toArray(); Arrays.sort(unsort_key); for (int i = 0; i ; i++) { result.put(unsort_key[i].toString(), unsort_map.get(unsort_key[i])); } return result....

    解决Laravel5.5下的toArray问题

    今天小编就为大家分享一篇解决Laravel5.5下的toArray问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    关于List.ToArray()方法的效率测试

    之前一直认为因为List内部实现是数组,ToArray的实现只是将数组返回出去而已。 今天测了一下发现并不是那样 var a = new List(); for (int i = 0; i &lt; 10000; i++) { a.Add(i); } DebugHelper.StartWatch(); ...

    jQuery学习笔记之toArray()

    jquery.toArray()是将jQuery对象转换成数组,我们来分析下

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    注意到 destination 的 id 并没有写死在代码中,而是通过以下语句获得的: 清单 11. 获取 destination 的 ID properties.getPropertyAsString(SOURCE, instance.getId()) Property 的 SOURCE 属性由 ...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    注意到 destination 的 id 并没有写死在代码中,而是通过以下语句获得的: 清单 11. 获取 destination 的 ID properties.getPropertyAsString(SOURCE, instance.getId()) Property 的 SOURCE 属性由 ...

Global site tag (gtag.js) - Google Analytics