1

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

这个旧教程中,它是通过使用 __ 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 模块......

最好的

4

1 回答 1

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 
}

哪个你觉得更清楚。

编辑: 这是将 Jython 嵌入 Java 的标准文档。从 Java 中使用 Jython 的更好方法是从 Jython 实现 Java 接口并从 Java 中操作接口,但您似乎正在使用现有的 Python 代码库,因此如果不进行一些更改,它将无法工作。

于 2012-05-07T07:59:27.183 回答