преобразовать список python в массив java, используя py4j - PullRequest
0 голосов
/ 28 января 2020

как говорится в заголовке, я хочу преобразовать список строк в python в массив java. После этого я передам массив java методу java, принимающему аргументы varargs. И я использую 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)

Итак, мне нужно знать, как преобразовать список python в массив java, используя py4j. В java мы можем выполнить это с помощью .toArray(), но я не знаю, как это сделать с python.

1 Ответ

0 голосов
/ 04 февраля 2020

Я нашел метод из 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)
...