Arrays.copyOfRange通用数组创建机制

时间:2018-04-23 09:30:05

标签: java arrays generics

Arrayspublic static <T> T[] copyOfRange(T[] original, int from, int to)的以下静态实用程序方法中。它是如何创建类型为T[]的数组的,因为在java中我们无法创建泛型数组,因为它会导致泛型数组创建错误。它只是创建一个Object[]类型的数组,对T[]进行未经检查的强制转换,然后返回结果吗?

1 个答案:

答案 0 :(得分:1)

您可以使用方法java.lang.reflect.Array.newInstance()

创建在运行时确定的组件类型的数组

copyOfRange可以通过执行类似original.getClass().getComponentType()之类的操作,从传入的数组对象中获取组件类型。 (.getClass()获取表示实际数组类型的Class对象,表示数组类型的.getComponentType对象上的调用Class获取表示其的Class对象组件类型。)