如标题所示,我想将python中的字符串列表转换为java数组。之后,我将java数组传递给带有varargs参数的java方法。我用py4j。
在Java中,我有以下方法:

public static void MyJavaMethod(String ...myStrings){
//my method instructions
}


在python中,我唯一能做的就是将我的python列表转换为JavaList,但麻烦的是我们无法将Javalist传递给带有varargs参数(仅数组)的方法:

from py4j.java_collections import SetConverter, MapConverter, ListConverter
from py4j.java_gateway import JavaGateway
mypythonlist=['string1', 'string2']
gateway = JavaGateway()
java_list = ListConverter().convert(mypythonlist, gateway._gateway_client)
# MyJavaArray=???
gateway.entry_point.MyJavaMethod(MyJavaArray)


因此,我需要知道如何使用py4j将python列表转换为java数组。在Java中,我们可以使用.toArray()来执行它,但是我不知道如何从python中执行它。

最佳答案

我从github找到了一种可以解决我的问题的方法:

from py4j.java_collections import SetConverter, MapConverter, ListConverter
from py4j.java_gateway import JavaGateway
gateway = JavaGateway()
mypythonlist=['string1', 'string2']
object_class = gateway.jvm.java.lang.String
MyJavaArray = gateway.new_array(object_class, len(mypythonlist))
for i in range(len(mypythonlist)):
    my_array[i]=mypythonlist[i]
gateway.entry_point.MyJavaMethod(MyJavaArray)

10-01 13:41