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。
3、toArray()方法用法
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
String[] tt = (String[]) list.toArray(new String[0]);
}