Java:List.toArray(new T)

Java:List.toArray(new T)
List.toArray(new T) 是 Java 中将列表安全转换为指定类型数组的标准写法利用空数组传递运行时类型信息避免 ClassCastException 且现代 JVM 已对其深度优化 。用法与原理- 完整语法T[] array list.toArray(new T);T 为元素类型如 String、Integer- 作用机制参数 new T 仅用于告知方法目标数组的组件类型因长度不足JVM 内部会反射创建正确大小的新数组并填充元素返回类型与声明一致无需强转。- 为何推荐 new T相比 new T[list.size()]代码更简洁且避免了并发下 size() 变化导致的长度不匹配风险自 JDK 6 起性能已等同甚至优于预分配数组 。- 常见错误直接调用无参 toArray() 返回 Object[]强制转为具体类型数组如 (String[])会在运行时抛出 ClassCastException 。两种重载对比1. 无参版 list.toArray()返回 Object[]需手动遍历转换元素强转整个数组会报错。2. 带参版 list.toArray(new T)直接返回 T[] 类型数组类型安全推荐默认使用。注意事项- 仅支持引用类型泛型不支持基本类型如 intListint 非法若需 int[]须通过 Stream mapToInt 转换 。- 泛型类中传递在泛型方法/类中无法直接 new T需由调用方传入模板数组或使用 ClassT 反射创建 。- 特殊集合CopyOnWriteArrayList 等并发集合对 new T 无额外优化但用法依然安全有效 。示例代码javaListString list Arrays.asList(A, B);String[] arr list.toArray(new String); // 正确arr 类型为 String