Jython PyList映射到List <string>和其他Jython到Java变量映射</string>

时间:2012-05-04 10:08:13

标签: java python list jython

如何迭代Jython PyList并将我包含的对象转换或转换为java.lang.String?

this旧教程中,使用__ tojava __完成,如:

(EmployeeType)employeeObj.__tojava__(EmployeeType.class);

我认为这可能是这样的:

 PyList pywords = pythonFactoryCreatedObject.pythonMethodReturningPyList()

 int count = pywords.__len__();
 for (int idx = 0 ; idx < count ; idx++) {
     PyObject obj = pywords.__getitem__(idx);

    //here i do not know how to have a kind of 'String word = pywords[idx]' statement

    //System.out.println(word);
 }

是否也可以:

  • 从PyList到java Array或List的转换?这样构造'for(String word:mylist){}'可以用吗?

  • 我会遇到同样的麻烦,简单的python字典映射到一个适当的java对象,最好的映射是什么?

是否有关于Jython的Java部分用法的教程文档?我对python很不错,但对Java和Jython不熟悉,我只发现了Jython中Java用法的文档,而我需要在Java框架中嵌入一个Python模块......

最好的

1 个答案:

答案 0 :(得分:2)

PyList实际上实现了java.util.List<Object>,因此您可以直接从Java端使用它。 如果填充字符串,其元素将为PyString(或者PyUnicode)。 所以:

List pywords = pythonFactoryCreatedObject.pythonMethodReturningPyList();
for (Object o : pyList){
  String string = ((PyString) o).getString();
  //whatever you want to do with it 
}

List pywords = pythonFactoryCreatedObject.pythonMethodReturningPyList()
for (Object o : pyList){
  String string = ((PyObject) o).__toJava__(String.class);
  //whatever you want to do with it 
}

无论你发现哪个更清楚。

编辑: here's the standard doc on embedding Jython into Java。从Java使用Jython的更好方法是从Jython实现Java接口并从Java操作接口,但似乎您正在使用现有的Python代码库,因此如果没有一些更改,这将无法工作。