Java 转型—应用toArray()的一点启示
Java支持向上和向下转型,有这样一段代码:
private ArrayList<String> fTypeNameList;
public String[] getTypeNames() {
return (String[])fTypeNameList.toArray();
}
这段代码编译能通过,但是运行时却抛出了异常。百思不得其解,后来想想,原来是一个简单的转型问题。改成下面的代码后,问题解决。
private ArrayList<String> fComponentTypeNameList;
public String[] getTypeNames() {
int size = fTypeNameList.size();
String[] strs = new String[size];
return fTypeNameList.toArray(strs);
}
总结
Java中允许向上和向下转型,但是这个转型是否成功是根据Java虚拟机中这个对象的类型来实现的。Java虚拟机中保存了每个对象的类型。而数组也是一个对象。数组的类型是[Ljava.lang.Object。把[Ljava.lang.Object转换成[Ljava.lang.String是显然不可能的事情,因为这里是一个向下转型,而虚拟机只保存了这是一个Object的数组,不能保证数组中的元素是String的,所以这个转型不能成功。数组里面的元素只是元素的引用,不是存储的具体元素,所以数组中元素的类型还是保存在Java虚拟机中的。
分享到:
相关推荐
主要介绍了Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析的相关资料,需要的朋友可以参考下
Java常用技术篇介绍字符串、集合、内部类、线程和相关算法的应用;界面编程篇介绍Java的Swing编程、相关布局使用的控件和图像处理等知识;高级技术篇介绍网络编程的基本知识、输入/输出流的使用和JDBC数据库开发技术...
现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 Spring 框架。...
NULL 博文链接:https://jiaguwen123.iteye.com/blog/1679345
资源简介现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 ...
使用链式编程写法实现Java中byte数组的拼接。例如byte[] bytes = ByteUtils.get().add(0x41).add(07).add(11).add("15288930000").add(0x45).toArray();更灵活用法请参考Mybytes
此版发布于2019年06月15日,并正式更名为《Java开发手册》,用发布者的话说:“它属于所有参与其中的贡献者,也以此聊表我们对全球Java开发者的感谢”。此版升级内容包括: 1)新增21条新规约。比如,switch的空指针...
2019.06.19 《阿里巴巴Java开发手册》时隔一年,发布更新1.5.0华山版。...比如,IFNULL 的判断、集合的 toArray、日志处理等。 4)完善若干处示例。比如,命名示例、卫语句示例、enum 示例、finally 的 return示例等。
Object[] fileArray = allFiles.toArray(); BufferedInputStream in = null; FileInputStream fis = null; ZipOutputStream zos = null; FileOutputStream fos = null; try { fos = new ...
《Java开发手册》最新版涵盖了史无前例的三大升级: 1.新增21条新规约。比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2.修改描述112处。...
《Java开发手册》更新版,涵盖史无前例的三大升级: 1.新增21条新规约。比如,switch的空指针问题、浮点数的比较、无泛型限制引起的类型混乱、加锁与解锁的注意事项、YYYY的日期格式问题等; 2.修改描述112处。...
return jsonArray.toArray(); } public static void setDateFormat2Java() { JSONUtils.getMorpherRegistry().registerMorpher( new DateMorpher(new String[] { "yyyy-MM-dd", "yyyy-MM-dd HH:mm...
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....
修复建议:使用c.toArray(new String[c.size()])。 6.不良实践 - 方法返回boolean类型返回了null。 7.错误用法 - "."用作正则表达式。 修复建议:String的split方法传递的参数是正则表达式,正则表达式本身用到...
今天小编就为大家分享一篇解决Laravel5.5下的toArray问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
之前一直认为因为List内部实现是数组,ToArray的实现只是将数组返回出去而已。 今天测了一下发现并不是那样 var a = new List(); for (int i = 0; i < 10000; i++) { a.Add(i); } DebugHelper.StartWatch(); ...
jquery.toArray()是将jQuery对象转换成数组,我们来分析下
.antMatchers(ArrayUtil.toArray(authUrlWhiteListProperties.getWhiteUrls(), String.class)).permitAll() //开始进入 SecurityContextPersistenceFilter->doFilter方法 FilterSecurityInterceptor 中的doFilter-...