如何迭代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模块......
最好的
答案 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代码库,因此如果没有一些更改,这将无法工作。