java中toArray正确用法有三种,toArray方法都需要带参数:
public static String[] vectorToArray1(Vector<String> v) {
String[] newText = new String[v.size()];
v.toArray(newText);
return newText;
}
public static String[] vectorToArray2(Vector<String> v) {
String[] newText = (String[])v.toArray(new String[0]);
return newText;
}
public static String[] vectorToArray3(Vector<String> v) {
String[] newText = new String[v.size()];
String[] newStrings = (String[])v.toArray(newText);
return newStrings;
}
而不带参数的toArray()是不行的,运行时会报ClassCastException异常:
public static String[] vectorToArray4(Vector<String> v) {
String[] newText = (String[])v.toArray();
return newText;
}
原因分析:
toArray有两个方法:
public Object[] toArray() {
Object[] result = new Object[size];
System.arraycopy(elementData, 0, result, 0, size);
return result;
}
public Object[] toArray(Object a[]) {
if (a.length < size)
a = (Object[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
不带参数的方法,构造并返回一个Object数组对象,这时候向下转型为String数组对象,导致类型不兼容,报错。
而带参数的方法,构造的数组对象类型和参数的类型一致,故不存在转型。
分享到:
相关推荐
书中以通俗易懂的语言介绍Java语言,力求做到深入浅出。, 全书共30章,分为5篇。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的原因分析的相关资料,需要的朋友可以参考下
比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2)修改描述112处。比如,IFNULL的判断方式、集合的toArray的数组长度、日志占位符的处理等; 3...
比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2.修改描述112处。比如,IFNULL的判断方式、集合的toArray的数组长度、日志占位符的处理等; ...
NULL 博文链接:https://jiaguwen123.iteye.com/blog/1679345
比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2.修改描述112处。比如,IFNULL的判断方式、集合的toArray的数组长度、日志占位符的处理等; ...
修复建议:使用c.toArray(new String[c.size()])。 6.不良实践 - 方法返回boolean类型返回了null。 7.错误用法 - "."用作正则表达式。 修复建议:String的split方法传递的参数是正则表达式,正则表达式本身用到...
2019.06.19 《阿里巴巴Java开发手册》时隔一年,发布更新1.5.0华山版。同时,将更名为《Java开发手册》,涵盖史无前例的三大升级 1)鉴于本手册是社区开发者集体智慧的结晶,本版本移除阿里巴巴 Java 开发手册的...
Object[] fileArray = allFiles.toArray(); BufferedInputStream in = null; FileInputStream fis = null; ZipOutputStream zos = null; FileOutputStream fos = null; try { fos = new ...
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;...
1、容器不是数组,不能通过下标的方式访问容器中的元素2、数组的所有功能通过Arraylist容器都可以实现,只是实现的方式不同3、如果非要将容器当做一个数组来使用,通过toArray方法返回的就是一个数组示例程序:输出...
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问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
之前一直认为因为List内部实现是数组,ToArray的实现只是将数组返回出去而已。 今天测了一下发现并不是那样 var a = new List(); for (int i = 0; i < 10000; i++) { a.Add(i); } DebugHelper.StartWatch(); ...
jquery.toArray()是将jQuery对象转换成数组,我们来分析下
注意到 destination 的 id 并没有写死在代码中,而是通过以下语句获得的: 清单 11. 获取 destination 的 ID properties.getPropertyAsString(SOURCE, instance.getId()) Property 的 SOURCE 属性由 ...
注意到 destination 的 id 并没有写死在代码中,而是通过以下语句获得的: 清单 11. 获取 destination 的 ID properties.getPropertyAsString(SOURCE, instance.getId()) Property 的 SOURCE 属性由 ...