2

我在使用 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_inst”的B实例):

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

当我尝试运行上述代码时,出现以下异常: TypeError: setB(): expected 2 args; 得到 1

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

抱歉,如果这很明显,我已经阅读了教程以及“Java in a Nutshell”和“Core Python Programming”的 Jython 部分,但是这些例子真的很简单,他们没有关于如何做到这两个的例子方式绑定。

4

1 回答 1

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()语法,所以我将其更改为您在此处看到的。

于 2009-07-13T15:29:05.297 回答