是否可以将引用传递给基本数组的第i个元素?

现在,在我的代码中的某个地方,我传递了一个对原语的引用,例如一个Int

 val i = 0 

 fun whatever(i: KMutableProperty0) 

 whatever(::i) 

能够从函数内部获取/设置其值

一切工作到目前为止。

现在我想要为基本数组的第i个元素(如IntArray相同的IntArray

 val arr = intArrayOf(1, 2, 3) whatever(/* passing the reference to item 2 of arr*/) 

可能吗?

那么通过引用arr属性和索引呢?

 fun whatever(arr: KMutableProperty0, index: Int) whatever(::arr, i) 

这是不可能的,因为Java不允许在数组上进行指针操作。 Kotlin这样做(如果可能的话,在字节码级别)会打破互操作性。

编辑 :看来你不关心真正的数组指针,就像在C,所以你可以创建自己的包装类似于那些KMutableProperty

 class IntArrayRef(val array: IntArray, val index: Int) { fun get(): Int = array.get(index) fun set(value: Int) { array[index] = value } } fun modify(value: IntArrayRef) { value.set(4) } fun test() { val s = "abc" val arr = intArrayOf(1, 2, 3) modify(IntArrayRef(arr, 1)) } 

我的猜测是你需要手动为每个本地数组types创建一个包装器,因为它们在Kotlin级别作为非genericstypes公开 。