简介:
本文主要介绍Jdk 8中String[].class == Arrays.asList( “a”, “b”).toArray().getClass()结果为true,而Jdk 9及以上版本中为false的原因,以及两种Jdk版本中toArray()方法区别及用法。
1、Arrays.asList(“a”, “b”).toArray()中toArray()方法对应的源代码
1)Jdk 8中toArray()代码
@Override
public Object[] toArray() {
return a.clone();
}
2) Jdk 9以上版本中toArray()代码
@Override
public Object[] toArray() {
return Arrays.copyOf(a, a.length, Object[].class);
}
2、Jdk 8和Jdk 9+中toArray()方法区别
String[].class == Arrays.asList("a", "b").toArray().getClass()
在JDK 8的情况下它被克隆,它保留了它的数组类型(String[]
),而在JDK 9+中它使用Arrays.copyOf
显式的新数组类型复制为Object[]
。
所以在JDK 8中Arrays.asList("a", "b").toArray().getClass()
返回String[]
,并在JDK 9+中返回Object[]
,因此在JDK 9+中,String[].class == Arrays.asList("a", "b").toArray().getClass()
结果为false。
了解更多分析及数据抓取可查看:
http://data.yisurvey.com:8989/
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。