博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cannot use Arrays.copyOf because of class initialization order issues
阅读量:6652 次
发布时间:2019-06-25

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

hot3.png

在看String类的源码时,发现String类里的toCharArray()方法中有一段注释如下:

ad141d0c17a590c501b5afa7617e55ad778.jpg

经多方查找资料后,现解释如下:

虽然String 和Arrays 都属于rt.jar中的类,但是BootstrapClassloader 在加载这两个类的顺序是不同的。所以当String.class被加载进内存的时候,Arrays此时没有被加载,所以直接使用肯定会抛异常。而System.arrayCopy是使用native代码,则不会有这个问题。

另外有同学说把代码换掉以后也能运行, 那是因为换掉代码的时候 JVM已经加载完了所有的系统类, 所以才会看到也能正常运行。

转载于:https://my.oschina.net/u/3268478/blog/3011267

你可能感兴趣的文章
如何在open xml excel 中存储自定义xml数据?
查看>>
301和302跳转的区别
查看>>
【PM面试题】请设计一个老年人用的新闻App
查看>>
Linux安装 Mysql
查看>>
thickbox传递参数
查看>>
hdu 2082 找单词
查看>>
百度地图3.7.1获取当前的位置,并自定义自身位置的图标
查看>>
CuteEditor.Editor+a+a+c+a+a.a() System.RuntimeType.get_Assembly() 问题解决方法
查看>>
Int8 and UInt8 types different from Byte and SByte
查看>>
全面剖析Cocos2d游戏触摸机制 (下)
查看>>
Android 检测网络连接状态(转)
查看>>
Javascript的转义Escape
查看>>
C++结构体中的静态变量
查看>>
JSON.parse()和JSON.stringify()
查看>>
mysql 查排名
查看>>
中国最大的融资平台
查看>>
OO第二单元作业小结
查看>>
[华为机试练习题]37.合唱队
查看>>
犯错了~
查看>>
[PHP] 最简单的权限控制设计
查看>>