博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java Arrays.sort的使用问题
阅读量:4039 次
发布时间:2019-05-24

本文共 937 字,大约阅读时间需要 3 分钟。

         首先运行下面的代码:

public static void main(String[] args) {     Object[] objs={    		 new Integer(5),    		 new Integer(9),    		 new String("aa"),    		 new Boolean(true)     };     Arrays.sort(objs);     for(int i=0;i
运行完毕,在控制台上会出现下面的异常提示:

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

at java.lang.String.compareTo(Unknown Source)
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)

错误行出现在Arrays.sort那一行。

     然后上网去找了一下api,看了一下,终于知道怎么回事了。

     这个Arrays.sort使用会出现classcastexception类型转化异常,是因为这个方法reload了可以用Object数组类型作为参数的方法,这就导致了在排序的时候必须进行不同类型之间的转化。这个转化应该使用什么方法才可以实现这种无异常的使用呢?

     答案是数组中所有元素的类型必须实现接口就可以了。所以当Arrays.sort方法的参数是一种类型的元素组成的数组就不会出现这样的问题,当元素由多种类型的组成时,必须为每种元素类型实现这个接口。上面的例子中出现的错误是整数类型不能转化为字符串类型,换一种说法就是没有提供整数向字符串类型转化的方法。

转载地址:http://jhpdi.baihongyu.com/

你可能感兴趣的文章
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
交叉编译在x86上调试好的qt程序
查看>>