You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jython中创建用于Java互操作的数组数组?

解决Jython中创建Java二维数组的问题

这个问题我之前也碰到过,Jython里创建Java多维数组确实不能直接用Array这种不存在的类型,得换个思路来搞:

核心问题原因

你遇到的NameError是因为Jython中没有名为Array的内置类型,Java的数组类型是具体的数组类(比如Object[]对应的类是[Ljava.lang.Object;),不能用一个泛指的Array来指代。

方法一:先获取一维数组类型,再创建外层数组

这是最直观的方式,先创建一个一维数组的实例,通过它获取对应的数组类,再用这个类来定义外层数组的元素类型:

import jarray

# 1. 创建一个一维Object数组,获取它的Class类型
one_d_array_template = jarray.zeros(10, Object)
one_d_array_type = one_d_array_template.getClass()

# 2. 创建外层数组,长度为2,每个元素是一维Object数组
two_d_array = jarray.zeros(2, one_d_array_type)

# 3. 给外层数组的每个元素赋值具体的一维数组
two_d_array[0] = jarray.zeros(10, Object)
two_d_array[1] = jarray.zeros(15, Object)  # 甚至可以是不同长度的一维数组

方法二:直接嵌套创建二维数组

如果想一步到位,可以用jarray.array直接嵌套创建,把多个一维数组作为元素传入:

import jarray

# 定义一维数组的类型
one_d_type = jarray.zeros(10, Object).getClass()

# 直接创建包含两个一维数组的二维数组
two_d_array = jarray.array(
    [jarray.zeros(10, Object), jarray.zeros(10, Object)],
    one_d_type
)

验证结果

你可以打印数组的类型来确认这是标准的Java二维数组:

print(type(two_d_array))
# 输出会是类似 <type '[Ljava.lang.Object;'>,这就是Java中Object[][]的类型标识

内容的提问来源于stack exchange,提问作者user482745

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:30:02