Jython:将脚本中的java类实例化为Java对象,而不是Python对象

时间:2009-07-12 06:59:54

标签: java jython objectinstantiation

使用Jython时遇到问题,但我似乎无法在文档中找到解决方案。

基本上我所拥有的是一个已经用Java实例化的对象,我希望实例化另一个Java对象(在python脚本中)并将预先实例化的java对象添加到我在jython解释器中实例化的对象中

例如:

public class A {
    private B bInstance;

    public void setB(B bval) {
        bInstance = b;
    }
}

public class B {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String n) {
        this.name = n;
    }
}

python脚本(B的实例绑定为“b_inst”):

import com.package.A
a_inst = com.package.A()
a_inst.setB(b_inst)

当我尝试运行上面的代码时,我得到以下异常:     TypeError:setB():期望2个args;得到1

我很确定这是因为setB()方法试图在Python对象上调用方法,而不是在实际的java对象上调用。基本上我希望对我刚刚在jython脚本中创建的A实例上的setB()调用是一个java对象,而不是一个python对象。

很抱歉,如果这是显而易见的,我已经阅读了教程以及“Java in a Nutshell”和“Core Python Programming”的Jython部分,但这些示例真的非常简单,他们没有示例如何做这种双向约束。

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的Jython?我正在尝试使用2.5.0和以下工作:

from com.package import A, B
b_inst = B()
a_inst = A()
a_inst.setB(b_inst)

它不喜欢com.package.A()语法,因此我将其更改为您在此处看到的内容。