Jython中的方法可以返回Java对象吗?

时间:2014-05-06 19:54:43

标签: java swing jython

我正在使用Marathon来测试Java Swing应用程序。使用Jython的Java Swing应用程序的测试工具。在这个问题的范围内,我只关注两个python文件。

CallingFile.py:

    testObject = getParentOfFooJPanel(get_component('...'))
    print(testObject.getClass().getSimpleName()) #this is only here for testing
                                                 #if my code works, but this is
                                                 #where I get the errors

FileWithMethod.py

    def getParentOfFooJPanel(startingComponent):
        if (startingComponent.getClass().getSimpleName() == 'FooJPanel')

            print(startingComponent.getClass().getSimpleName()) #prints what I would expect
            print(startingComponent.getParent().getClass().getSimpleName()) #prints what I would expect
            return(startingComponent.getParent())

        else:

            getParentOfFooJPanel(startingComponent.getParent())

每当我尝试在FileWithMethod.py中引用该对象时,它的行为就像我期望的那样。但是,当我返回组件(Java对象)并尝试在CallingFile.py中使用它时(现在我打电话来打印简单名称),它表示' NoneType'对象没有属性' getClass'。 Jython可以不返回Java对象吗?如果没有,是否有任何工作?

1 个答案:

答案 0 :(得分:1)

Jython绝对可以返回Java对象。下面是一个返回对象的示例。

您的错误很可能意味着代码中的其他错误正在返回None

CallingFile.py:

from FileWithMethod import getStringReader
testObject = getStringReader("Hello World")
print(type(testObject))

FileWithMethod.py

import java.io.StringReader
def getStringReader(string):
    return java.io.StringReader(string)

运行它:

$ jython CallingFile.py
<type 'java.io.StringReader'>