当应用于`make-array`数组时,aget返回一个java对象

时间:2016-07-29 13:46:13

标签: clojure clojure-java-interop

我希望以下代码返回(0,0)值。然而我得到了一个java对象

(let [axs (make-array Long 5 5 0)]                                                                                                                                                                                                                                              
  (aget axs 0 0))        

在尝试改变索引(0,0)

时,我也遇到了类型不匹配的问题
(let [axs (make-array Long 5 5 0)]                                                                                                                                                                                                                                              
  (aset axs 0 0 1))  

我希望将Long [5] [5] java数组初始化为零。我在这里缺少什么?

由于

1 个答案:

答案 0 :(得分:3)

make-array的第三个参数不会用零初始化数组,但会添加第三个数组维,其大小等于零。因此,数组的大小也为零。要解决此问题,请按如下方式创建数组:

(make-array Long/TYPE 5 5)

这将创建原始longs 的数组,并用零初始化它。