2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
Object[]
如果你想保持動(dòng)態(tài),你可以將它轉(zhuǎn)換為它,它會(huì)起作用:
Object[] copy = Arrays.copyOf((Object[])arrayType.cast(array), Array.getLength(array));
在引擎蓋下,它將按原樣復(fù)制數(shù)組,即副本將成為Integer[]
您給定示例的一個(gè)。
如果您想要做的更通用,您還可以在轉(zhuǎn)換之前檢查給定類型是否實(shí)際上是一個(gè)數(shù)組,例如在您的示例中您可以使用arrayType.isArray()
它。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
我對(duì) kotlin jvm 有疑問(它取代了Objectby Any)。typeOf因此,要將泛型轉(zhuǎn)換為我從kotlin-reflect使用的數(shù)組:
private inline fun <reified T> genericReflectionToTypedArray(): T? {
return java.lang.reflect.Array.newInstance(typeOf<T>().arguments[0].type!!.javaType as Class<*>, 10) as T
}
在這種情況下,您會(huì)知道這T是一個(gè)數(shù)組,因此,要獲取數(shù)組的類型,您將使用typeOf并將 java 類型作為您的第一個(gè)類型參數(shù)的類Array<T>。
該newInstance方法采用您的 Array 的 java 類型,第二個(gè)參數(shù)是數(shù)組的長(zhǎng)度。在這種情況下,沒有 UNCHECKED CAST。
添加回答
舉報(bào)